Re: [Haskell-cafe] Weak pointers and referential transparency???

Brian Hulley wrote:
tpledger@ihug.co.nz wrote: [...]
My reading of the semantics
(http://haskell.org/ghc/docs/latest/html/libraries/base/System-Mem-Weak.html#...)
is that you can be sure the proxy *object* is gone.
My problem is that I don't know what to make of the word "object" in the context of Haskell ie when can I be sure that a value is actually being represented as a pointer to a block of memory and not stored in registers or optimized out? Or is the compiler clever enough to preserve the concept of "object" despite such optimizations? I had been designing my Model/Proxy data types with the Java notion of "everything is a pointer to an object" but is this always correct relative to Haskell as a language or is it just a consequence of the current GHC implementation?
In the context of System.Mem.Weak, but not necessarily GHC, we're concerned solely with garbage collection of heap objects. So yes, that's Java-like. AFAIK. An example of something outside that context is a GHC Int# (unboxed Int). It never inhabits the heap, and isn't allowed to be passed to a function where a polymorphic parameter is expected (such as mkWeak). Regards, Tom
participants (1)
-
tpledger@ihug.co.nz