Re: [Haskell-cafe] safe lazy IO or Iteratee?

Hello,
From: David Leimbach
Hi everyone,
Yet at the same time, I'm quite enamored with the beauty of "interact" and functions of that sort. I realize mixing the effects of the lazy IO and pure code may not be the clearest way to write code for everyone, but there is something about being able to get linewise data as
interact (unlines . fmap someLineWiseFunction . lines)
that is just kind of cool.
I think so too. I really like the "interact" style of code; I find it supremely elegant. However I also find it insufficient for many interesting cases. One general problem is the difficulty of embedding monadic code into interact functions. Usually "interact" requires a pure function. Although in many cases I think it would be possible to have interactM :: (String -> IO String) -> IO () in practice these functions don't usually exist, perhaps because they can have some surprising behavior. In my opinion IO is a weakness of Haskell, and many Haskell users either subconciously or actively seek out alternative approaches. I offer as evidence the frequency with which beginners ask the cafe about "handle closed before data could be read" errors, and also the proliferation of IO libraries. I know which I approach I think represents the best way forward, but I would be surprised if there was a community consensus at this point. In any case, I'm glad there are a multitude of options and each probably has a place and purpose. Cheers, John Lato
participants (1)
-
John Lato