[Haskell-cafe] IO in lists

Joachim Breitner mail at joachim-breitner.de
Tue Jan 16 11:01:55 EST 2007


Hi,

you can also try with unsafeInterleaveIO, works like a charm, and you
really feel the laziness:

*Main> main
-- now entering “testq”
t"teessttq"

========================
import System.IO.Unsafe

sequence' :: [IO a] -> IO [a]
sequence' (x:xs) = do 
	r  <- x;
	rs <- unsafeInterleaveIO (sequence' xs)
	return (r:rs)
	
main = do
	allChars <- sequence' $ repeat getChar
	let getChars = takeWhile (/= 'q') allChars
	print getChars
========================

Unfortunately, this did not work:
	allChars <- sequence $ repeat $ unsafeInterleaveIO getChar
Probably because of something sequence is doing.

Greetings,
Joachim

-- 
Joachim "nomeata" Breitner
  mail: mail at joachim-breitner.de | ICQ# 74513189 | GPG-Key: 4743206C
  JID: joachimbreitner at amessage.de | http://www.joachim-breitner.de/
  Debian Developer: nomeata at debian.org


More information about the Haskell-Cafe mailing list