Sorry wrong paste Prelude> :t 3 2 3 2 :: (Num a, Num (a -> t)) => t
What does the type mean in plain english? Daryoush On Fri, Nov 16, 2012 at 12:00 AM, Daryoush Mehrtash <dmehrt...@gmail.com>wrote: > Yes, same problem, and again I have no idea how to read the type > > Prelude> :t max. 3 2 > max. 3 2 :: (Ord b, Num a1, Num (a1 -> a -> b)) => a -> b -> b > > > What does the type mean in plain english? > > Daryoush > > On Thu, Nov 15, 2012 at 11:56 PM, Ramana Kumar > <ramana.ku...@cl.cam.ac.uk>wrote: > >> Another experiment may be revealing: >> >> :t 3 2 >> >> >> >> On Fri, Nov 16, 2012 at 7:46 AM, Daryoush Mehrtash >> <dmehrt...@gmail.com>wrote: >> >>> I see the point with :t (.) that >>> >>> max.(+1) 2 2 >>> >>> is the same as >>> >>> max. 3 2 >>> >>> Which is not what I want. >>> >>> But I have no idea what the type signature of this expression mean now >>> >>> Prelude> :t max. 3 2 >>> max. 3 2 :: (Ord b, Num a1, Num (a1 -> a -> b)) => a -> b -> b >>> >>> Any idea? >>> >>> Daryoush >>> >>> >>> On Thu, Nov 15, 2012 at 11:19 PM, Ramana Kumar < >>> ramana.ku...@cl.cam.ac.uk> wrote: >>> >>>> 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 >>>>> >>>>> >>>> >>> >>> >>> -- >>> Daryoush >>> >>> Weblog: http://onfp.blogspot.com/ >>> >> >> > > > -- > Daryoush > > Weblog: http://onfp.blogspot.com/ > -- Daryoush Weblog: http://onfp.blogspot.com/
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe