The presence of (Step b m r) is an artifact of Haskell's type system. It can be removed through use of language extensions and 'forall' to give a more aesthetically pleasing signature, but there should be no behavioral difference.
On Wed, Dec 21, 2011 at 03:26, Michael Snoyman <[email protected]> wrote: > On Wed, Dec 21, 2011 at 12:59 PM, Kannan Goundan <[email protected]> wrote: >> Michael Snoyman wrote: >> >>> On Wed, Dec 21, 2011 at 12:35 PM, Kannan Goundan <[email protected]> >>> 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 >>>> [email protected] >>>> 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 :-) >> >> >> _______________________________________________ >> Haskell-Cafe mailing list >> [email protected] >> http://www.haskell.org/mailman/listinfo/haskell-cafe > > Huh, I'm stumped ;). John: is this possible in enumerator? > > In general though: do you need precisely that type signature? Most of > the time, Enumerators have polymorphic return types. It might be a > problem from http-enumerator requiring (), but I *think* we can work > around that. > > Michael _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
