Wolfgang Lux wrote:
> > It is unclear to me what do you mean by "sound"?
> > "Try" is related to the meta-level, so it might be difficult to
> > talk about soundness for "try".
>
> By unsound in this case I mean that y /= y can be true under option 3. I find
> this unacceptable even for a meta-level construct in the language. Therefore
I don't really see that. y/=y cannot be true within one computation space.
In the same space, be it a local or a global space, a variable will always
have the same value. If y appears in a local computation, it will either
be bound, then it cannot escape from the local computation back into
a higher space as a variable but only as a term to which this variable
has been bound. If y is not bound at all in the local computation,
it can return into the global space, but then it will remain shared with
the other occurences. Thus, a variable will always have the same value
in the same computation.
So, I think that at least this problem should not occur. Or maybe I
don't understand the situtation you think of where y/=y could be true.
By the way, has anyone an idea how difficult it would be to detect if
a variable is shared or not? If we could easily decide that, then we
would evaluate y if it was not shared, thus keeping the idea of not
effecting global object while still preserving sharing, but in contrast
to option 1 we would suspend in fewer cases...
cu,
Frank
--
Dipl.-Inform. Frank Steiner mailto:fst_at_informatik.uni-kiel.de
Lehrstuhl f. Programmiersprachen mailto:fsteiner_at_web.de
CAU Kiel, Olshausenstraße 40 Phone: +49 431 880-7265, Fax: -7613
D-24098 Kiel, Germany http://www.informatik.uni-kiel.de/~fst/
Received on Mi Jan 16 2002 - 02:10:49 CET