DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(guile.info.gz) Weak References

Info Catalog (guile.info.gz) Garbage Collection (guile.info.gz) Memory Management (guile.info.gz) Guardians
 
 29.2 Weak References
 ====================
 
 [FIXME: This chapter is based on Mikael Djurfeldt's answer to a
 question by Michael Livshin. Any mistakes are not theirs, of course. ]
 
    Weak references let you attach bookkeeping information to data so
 that the additional information automatically disappears when the
 original data is no longer in use and gets garbage collected. In a weak
 key hash, the hash entry for that key disappears as soon as the key is
 no longer referenced from anywhere else. For weak value hashes, the
 same happens as soon as the value is no longer in use. Entries in a
 doubly weak hash disappear when either the key or the value are not
 used anywhere else anymore.
 
    Object properties offer the same kind of functionality as weak key
 hashes in many situations. ( Object Properties)
 
    Here's an example (a little bit strained perhaps, but one of the
 examples is actually used in Guile):
 
    Assume that you're implementing a debugging system where you want to
 associate information about filename and position of source code
 expressions with the expressions themselves.
 
    Hashtables can be used for that, but if you use ordinary hash tables
 it will be impossible for the scheme interpreter to "forget" old source
 when, for example, a file is reloaded.
 
    To implement the mapping from source code expressions to positional
 information it is necessary to use weak-key tables since we don't want
 the expressions to be remembered just because they are in our table.
 
    To implement a mapping from source file line numbers to source code
 expressions you would use a weak-value table.
 
    To implement a mapping from source code expressions to the procedures
 they constitute a doubly-weak table has to be used.
 

Menu

 
* Weak key hashes
* Weak vectors
 
Info Catalog (guile.info.gz) Garbage Collection (guile.info.gz) Memory Management (guile.info.gz) Guardians
automatically generated byinfo2html