That argument doesn't totally fly since non-termination isn't considered an effect in Haskell. Bottom doesn't commute with a IO operations normally either. But not having readIVar return 'IO a' does make me a little quesy. :) -- Lennart On Dec 4, 2007 8:25 AM, Simon Peyton-Jones <simonpj@microsoft.com> wrote:
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> 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> wrote:
You can make them from MVars.
On Dec 2, 2007 8:03 PM, Conal Elliott <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 http://www.haskell.org/mailman/listinfo/haskell
_______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell
_______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell