[Haskell-cafe] Re: Re: [newbie] How to test this function?
Bruno Martínez
br1 at internet.com.uy
Thu Sep 21 10:40:49 EDT 2006
On Thu, 21 Sep 2006 11:20:33 -0300, Henning Thielemann
<lemming at henning-thielemann.de> wrote:
>
> On Thu, 21 Sep 2006, Bruno Martínez wrote:
>
>> > getList :: IO [Char]
>> > getList = take5 `fmap` getContents -- a thin IO "skin"
>> >
>> > take5 :: [Char] -> [Char]
>> > take5 = take 5 . filter (`elem` ['a'..'e']) -- the actual worker
>>
>> The problem is that getContents 'eats' stdin, which can't be used again.
>
> You can process the result of getContents as many times as you want.
But I cannot process input again without getContents. This function's use
of getContents forces me to use only getContents everywhere. For example,
I can't use hWaitForInput in another IO action.
>> I'm forced to change all my IO code to the getContents way, which is not
>> possible.
>
> If your program contains so much IO code you should seriously consider
> refactoring.
I try to minimize the amount of IO I do, but there's a point I don't know
how to strip my functions of their remaining IOness. That's why I ask :)
Bruno
More information about the Haskell-Cafe
mailing list