Hi,

Am Freitag, den 19.01.2007, 11:19 +0100 schrieb Ferenc Wagner:
> Magnus Therning <[EMAIL PROTECTED]> writes:
> 
> > Thanks for all the excellent answers to my original question.  Somehow
> > it feels like I advanced and got one level closer to a black belt in
> > Haskell due to this; I've now legitimately used a function from
> > System.IO.Unsafe :-)
> >
> > I tried to document it all: http://therning.org/magnus/archives/249
> 
> I wonder whether the unsafeInterleaved solution is guarranteed to work
> as per your specification.  Couldn't it read a character, write it,
> then read three characters, write two, read one more then write two
> again, and so on?  It has to catch up at the end, but needn't stay
> synchronized during the process, perhaps...

I think it is: 
“unsafeInterleaveIO allows IO computation to be deferred lazily. When
passed a value of type IO a, the IO will only be performed when the
value of the a is demanded. This is used to implement lazy file reading,
see hGetContents.”[1]

If it would read a value that is not needed, it would violate the
documented behaviour (the “only .. when .. demanded” is important).

Greetings,
Joachim

[1] 
http://haskell.org/ghc/docs/latest/html/libraries/base/System-IO-Unsafe.html#v%3AunsafeInterleaveIO
-- 
Joachim Breitner
  e-Mail: [EMAIL PROTECTED]
  Homepage: http://www.joachim-breitner.de
  ICQ#: 74513189
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to