
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@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.