[Haskell-cafe] "mapping" an Enumerator
Kannan Goundan
kannan at cakoose.com
Wed Dec 21 11:59:39 CET 2011
Michael Snoyman wrote:
> On Wed, Dec 21, 2011 at 12:35 PM, Kannan Goundan <kannan at cakoose.com>
> wrote:
>> I'm using the Data.Enumerator library. I'm trying to write a "map"
>> function that converts an Enumerator of one type to another. Something
>> like:
>>
>> mapEnum :: Monad m =>
>> (a -> b) ->
>> Enumerator a m r ->
>> Enumerator b m r
>>
>> Any hints?
>>
>> (My exact use case is that I have a ByteString enumerator and I need to
>> pass it to something that requires a Blaze.Builder enumerator.)
>>
>>
>> _______________________________________________ Haskell-Cafe mailing
>> list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
> You can use the Data.Enumerator.List.map function to create an
> Enumeratee, and then the Data.Enumerator.$= operators to join them
> together. Something like:
>
> mapEnum f enum = enum $= EL.map f
I tried something like that but the resulting type isn't quite what I'm
looking for.
mapEnum :: Monad m =>
(a -> b) ->
Enumerator a m (Step b m r) ->
Enumerator a m r
(BTW, Michael, my exact use case is that I have ByteString enumerators,
but your HTTP-Enumerator library wants Blaze.Builder enumerators :-)
More information about the Haskell-Cafe
mailing list