[Haskell-cafe] Monad transformer to consume a list

Henning Thielemann lemming at henning-thielemann.de
Tue Apr 7 05:09:53 EDT 2009


On Tue, 7 Apr 2009, Stephan Friedrichs wrote:

> Henning Thielemann wrote:
>
>>> is there a monad transformer to consume an input list? I've got external
>>> events "streaming into the monad" that are consumed on demand and I'm
>>> not sure if there's something better than a StateT.
>>
>> I wondered that, too. I wondered whether there is something inverse to
>> Writer, and Reader is appearently not the answer. Now I think, that
>> State is indeed the way to go to consume a list. Even better is StateT
>> List Maybe:
>>
>> next :: StateT [a] Maybe a
>> next = StateT Data.List.HT.viewL   -- see utility-ht package
>>
>
> But a StateT provides the power to modify the list in other ways than
> reading the first element (modify (x:)). Maybe ParsecT is closer to what
> I'm looking for ;)

If you want to restrict the functionality of StateT, then wrap it in a 
newtype.


More information about the Haskell-Cafe mailing list