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

tpledger at ihug.co.nz tpledger at ihug.co.nz
Wed Sep 13 18:59:08 EDT 2006


Brian Hulley wrote:
> tpledger at ihug.co.nz wrote:
[...]
> > My reading of the semantics
> >
(http://haskell.org/ghc/docs/latest/html/libraries/base/System-Mem-Weak.html#4)
> > 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


More information about the Haskell-Cafe mailing list