Proposal: Make StateT in mtl lazy

Ian Lynagh igloo at earth.li
Wed Jan 31 19:22:08 EST 2007


On Wed, Jan 31, 2007 at 04:06:07PM +0000, Neil Mitchell wrote:
> 
> >If we're going to have a strict StateT then it would make sense to have
> >a strict State too. Control.Monad.State.Strict perhaps? (and likewise
> >for the other mtl monads, where appropriate).
> 
> For foldl we have foldl and foldl'.

Right, and I'd guess about a dozen other functions dotted around the
core libraries.

> Why not State and State' ?
(refering to type names, not module names)

This would also presumably give us

    runState'  evalState'  ...
    runStateT' evalStateT' ...

Existing examples of using .Strict/.Lazy modules are:

    Control.Monad.ST.Lazy
    Control.Monad.ST.Strict

    Data.STRef.Lazy
    Data.STRef.Strict

    Data.ByteString
    Data.ByteString.Lazy

Has anyone else got an opinion as to which is preferable?


Thanks
Ian



More information about the Libraries mailing list