[Haskell-cafe] Re: Unary Minus

Benjamin L.Russell DekuDekuplex at Yahoo.com
Mon Apr 6 07:02:58 EDT 2009


On Mon, 6 Apr 2009 12:13:09 +0200, Roel van Dijk
<vandijk.roel at gmail.com> wrote:

>On Mon, Apr 6, 2009 at 12:04 PM, Benjamin L.Russell
><DekuDekuplex at yahoo.com> wrote:
>> Interesting. ?How is this hack implemented?
>
>This seems to be the relevant grammar:
>  lexp6 -> - exp7
>  lpat6 -> - (integer | float)        (negative literal)
>
>The '6's and the '7' are superscripts.
>Perhaps the hack is in the precedence of the expression in which an
>unary minus is allowed.

What's interesting are the following definitions of the functions '-'
(binary minus) and "negate" given in "8  Standard Prelude" (see
http://www.haskell.org/onlinereport/standard-prelude.html#$tNum):

>class  (Eq a, Show a) => Num a  where
>    (+), (-), (*)    :: a -> a -> a
>    negate           :: a -> a
>    abs, signum      :: a -> a
>    fromInteger      :: Integer -> a
>
>        -- Minimal complete definition:
>        --      All, except negate or (-)
>    x - y            =  x + negate y
>    negate x         =  0 - x

The type of "negate," "a -> a", where a is a Num, is precisely what is
needed for a unary minus.

-- Benjamin L. Russell
-- 
Benjamin L. Russell  /   DekuDekuplex at Yahoo dot com
http://dekudekuplex.wordpress.com/
Translator/Interpreter / Mobile:  +011 81 80-3603-6725
"Furuike ya, kawazu tobikomu mizu no oto." 
-- Matsuo Basho^ 



More information about the Haskell-Cafe mailing list