Hi Daryoush,
I recommend you try these experiments first, and then reply back if you're still confused.
:t max
:t (+1)
:t max . (+1)
:t (+1) 2
:t (.)
I am having hard time understanding how removing the outer parenthesis in(max.(+1)) 2 2tomax.(+1) 2 2changes 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 -> bWith parenthesis it does what I expect it to:Prelude> :t (max.(+1)) 2 2(max.(+1)) 2 2 :: (Ord b, Num b) => bPrelude> (max.(+1)) 2 23But if I remove the parenthesis I get a beast that I have no idea what its type signature mean any morePrelude> :t (max.(+1)) 2 2(max.(+1)) 2 2 :: (Ord b, Num b) => bPrelude> :t max.(+1) 2 2max.(+1) 2 2 :: (Ord b, Num a1, Num (a1 -> a -> b)) => a -> b -> bHow 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/
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe