[Haskell-cafe] generic putback
Sergey Mironov
ierton at gmail.com
Tue May 17 12:45:31 CEST 2011
Thanks for your answers! I looked further and found that 'Oleg alredy
did it'. Really, looks like iteratees will suit my needs :) I'm sorry
for bothering.
Sergey
2011/5/15 Daniel Gorín <dgorin at dc.uba.ar>:
> I think you need to change the type of putback slightly:
>
> import Data.IORef
>
> putback :: a -> IO a -> IO (IO a)
> putback a action =
> do next <- newIORef a
> return (do r <- readIORef next; writeIORef next =<< action; return r)
>
> main =
> do getChar' <- putback 'a' getChar
> str <- sequence $ take 10 $ repeat getChar'
> putStrLn str
>
> Thanks,
> Daniel
>
> On May 15, 2011, at 4:33 PM, Sergey Mironov wrote:
>
>> Hi Cafe. I wonder if it is possible to write a IO putback function
>> with following interface
>>
>> putback :: a -> IO a -> IO a
>> putback x io = ???
>>
>>
>> where io is some action like reading from file or socket.
>> I want putback to build new action which will return x on first call,
>> and continue executing io after that.
>>
>> Thanks in advance!
>> Sergey.
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
More information about the Haskell-Cafe
mailing list