[Haskell-cafe] Confused about my IterIO code

dm-list-haskell-cafe at scs.stanford.edu dm-list-haskell-cafe at scs.stanford.edu
Thu Jun 30 17:20:00 CEST 2011


At Thu, 30 Jun 2011 23:53:02 +1000,
John Ky wrote:
> 
> But all I've done is:
> 
>     enum |$ inumReverseLines .| iter
>    
>     inumReverseLines = mkInum $ do
>       line <- lineI
>       return (L.reverse (L.concat [line, C.pack "\n"]))

mkInum repeatedly invokes its iter argument so as to keep producing
chunks.  If you want to reverse only one line, it might be easiest to
use something along the lines of:

    mkInumM $ do
      line <- lineI
      ifeed (L.reverse (L.concat [line, C.pack "\n"]))

mkInumM is a more manual Inum construction function that doesn't
automatically do things like loop or handle EOF conditions.

David



More information about the Haskell-Cafe mailing list