[Haskell-beginners] Why this order of parameters

Martin Vlk martin at vlkk.cz
Thu Nov 12 17:00:24 UTC 2015

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.


> 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)

More information about the Beginners mailing list