[Haskell-cafe] How to compose operations in streaming

☂Josh Chia (謝任中) joshchia at gmail.com
Wed Jun 3 11:38:51 UTC 2020


The type of "SP.mapM_ putStrLn str" is IO (), so I don't think "SP.length_
(SP.mapM_ putStrLn str)" type checks, unless I'm somehow misreading your
code.

Anyway, I just realized I can use SP.copy:

  do
    l <- SP.mapM_ putStrLn $ SP.length_ $ SP.copy str
   print l

"l <- SP.length_ $ SP.mapM_ putStrLn $ SP.copy str" also works.


On Wed, Jun 3, 2020 at 3:23 PM Tom Ellis <
tom-lists-haskell-cafe-2017 at jaguarpaw.co.uk> wrote:

> On Wed, Jun 03, 2020 at 03:04:59PM +0800, ☂Josh Chia (謝任中) wrote:
> > I want to putStrLn each element and then print the length of str
> [...]
> > doit :: Stream (Of String) IO () -> IO ()
> > doit str =
> >   do
> >     SP.mapM_ putStrLn str
> >     SP.length_ str >>= print
>
> Isn't it
>
>     SP.length_ (SP.mapM_ putStrLn str) >>= print
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20200603/3f2cf374/attachment.html>


More information about the Haskell-Cafe mailing list