
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/