[Haskell-beginners] Why this order of parameters

Alex Belanger i.caught.air at gmail.com
Thu Nov 12 17:34:43 UTC 2015


foldr :: (a -> b -> b) -> b -> [a] -> b
foldr :: (b -> a -> a) -> a -> [b] -> a

are exactly the same types; simply inverted names for the type variables.

I don't clearly see any benefit.

Alex.
On Nov 12, 2015 12:00 PM, "Martin Vlk" <martin at vlkk.cz> wrote:

> Hi, my first intuition about this is that in data constructor it
> technically doesn't matter, but you could argue that "a" represents the
> actual result of the function so it comes first.
> Second comes the state, which is the side thing, hence the
> secondary/less important position.
>
> As for the order of type constructor parameters you are right - state is
> part of the structure that Monoid, Functor, Applicative, Monad and the
> like use.
>
> Martin
>
> martin:
> > runState :: State s a -> s -> (a, s)
> >
> > I understand that in the constructor s has to be first, so we can turn
> (State s) into a monad. But why doesn't s come
> > first in the result too, as in
> >
> > runState :: State s a -> s -> (s, a)
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20151112/d560c9a2/attachment.html>


More information about the Beginners mailing list