[Haskell-cafe] Re: [Haskell] Top Level <-
Ashley Yakeley
ashley at semantic.org
Sat Aug 30 07:42:16 EDT 2008
Ganesh Sittampalam wrote:
> Every single call to newIORef, across the whole world, returns a
> different ref.
How do you know? How can you compare them, except in the same Haskell
expression?
> The "same" one as a previous one can only be returned
> once the old one has become unused (and GCed).
Perhaps, but internally the IORef is a pointer value, and those pointer
values might be the same. From the same perspective, one could say that
every single call to newUnique across the whole world returns a
different value, but internally they are Integers that might repeat.
>> It's the scope in which values from newUnique are supposed to be
>> different, and it would also be the scope in which top-level <- would
>> be called at most once.
>
> I don't really follow this. Do you mean the minimal such scope, or the
> maximal such scope? The problem here is not about separate calls to
> newIORef, it's about how many times an individual <- will be executed.
Two IO executions are in the same "global scope" if their resulting
values can be used in the same expression. Top-level <- declarations
must execute at most once in this scope.
--
Ashley Yakeley
More information about the Haskell-Cafe
mailing list