But since the read may block, it matters *when* you perform it. For example if you print "Hello" and then read the IVar, you'll block after printing; but if you read the IVar and then print, the print won't come out. If the operation was pure (no IO) then you'd have a lot less control over when it happened. Simon From: haskell-bounces@haskell.org [mailto:haskell-bounces@haskell.org] On Behalf Of Lennart Augustsson Sent: 04 December 2007 08:19 To: Conal Elliott Cc: haskell@haskell.org Subject: Re: [Haskell] IVars Good question. That must be a matter of taste, because as you say the read will always produce the same result. But it sill is a bit of a strange operation. -- Lennart On Dec 4, 2007 6:25 AM, Conal Elliott < conal@conal.net<mailto:conal@conal.net>> wrote: Oh. Simple enough. Thanks. Another question: why the IO in readIVar :: IVar a -> IO a, instead of just readIVar :: IVar a -> a? After all, won't readIVar iv yield the same result (eventually) every time it's called? On Dec 3, 2007 12:29 AM, Lennart Augustsson <lennart@augustsson.net<mailto:lennart@augustsson.net>> wrote: You can make them from MVars. On Dec 2, 2007 8:03 PM, Conal Elliott <conal@conal.net<mailto:conal@conal.net>> wrote: what became of (assign-once) IVars? afaict, they were in concurrent haskell and now aren't. _______________________________________________ Haskell mailing list Haskell@haskell.org<mailto:Haskell@haskell.org> http://www.haskell.org/mailman/listinfo/haskell _______________________________________________ Haskell mailing list Haskell@haskell.org<mailto:Haskell@haskell.org> http://www.haskell.org/mailman/listinfo/haskell