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 (.) On Fri, Nov 16, 2012 at 7:10 AM, Daryoush Mehrtash <dmehrt...@gmail.com>wrote: > 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/ > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe