[Haskell-cafe] A common pattern

Andrew Coppin andrewcoppin at btinternet.com
Mon May 5 04:15:08 EDT 2008

Neil Mitchell wrote:
> Hi
>> I've found myself writing code like this several times now. Is there a
>> better way?
> hGetContents might be a different way to write a similar thing:
> read_args h = do
>      src <- hGetContents h
>      let (has,rest) = span ("#" `isPrefixOf`) $ lines src
>      return (map tail has)
> Of course, depending on exactly the kind of IO control you need to do,
> it may not work.

Yeah, I was thinking about that. I'm not sure if I could get it to work. 
It's reading from a network socket, not a file, and I think I might need 
to be able to explicitly close it. (What happens if the other end 
closes? Do I get an exception or just the end of the string?) I might 
possibly be able to just use hGetContents and run a parser lazily over 
the result, we'll see.

I know there's a few monad-related functions that I don't know about. I 
was curios to see if any of them help in this instance...

More information about the Haskell-Cafe mailing list