Daryoush Mehrtash wrote:
What is the difference between forall as in:

runST :: (forall s. ST s a) -> a

and the "=>" as in

evalStateT :: Monad m => StateT s m a -> s -> m a

The forall is Rank-2 polymorphism (the argument must be polymorphic in s). The => is for typeclass constraints (restricting the Rank-1 polymorphism on m, but not so far as to make it monomorphic).

Or did you have another question in mind?

--
Live well,
~wren
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to