[Haskell-cafe] need help with understanding expression
Daryoush Mehrtash
dmehrtash at gmail.com
Fri Nov 16 08:10:54 CET 2012
I am having hard time understanding how removing the outer parenthesis in
(max.(+1)) 2 2
to
max.(+1) 2 2
changes the meaning of expression.
My expectation was that "max.(+1) takes two numbers and returns the max as
defined in the type:
:t max.(+1)
max.(+1) :: (Ord b, Num b) => b -> b -> b
With parenthesis it does what I expect it to:
Prelude> :t (max.(+1)) 2 2
(max.(+1)) 2 2 :: (Ord b, Num b) => b
Prelude> (max.(+1)) 2 2
3
But if I remove the parenthesis I get a beast that I have no idea what its
type signature mean any more
Prelude> :t (max.(+1)) 2 2
(max.(+1)) 2 2 :: (Ord b, Num b) => b
Prelude> :t max.(+1) 2 2
max.(+1) 2 2 :: (Ord b, Num a1, Num (a1 -> a -> b)) => a -> b -> b
How did removal of parenthesis changed the meaning? How do you
interpret the type: "(Ord b, Num a1, Num (a1 -> a -> b)) => a -> b -> b"?
Thanks
--
Daryoush
Weblog: http://onfp.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20121115/e23d8ac6/attachment.htm>
More information about the Haskell-Cafe
mailing list