Guardians
=========
- primitive: make-guardian
Create a new guardian. A guardian protects a set of objects from
garbage collection, allowing a program to apply cleanup or other
actions.
make-guardian returns a procedure representing the guardian.
Calling the guardian procedure with an argument adds the argument
to the guardian's set of protected objects. Calling the guardian
procedure without an argument returns one of the protected objects
which are ready for garbage collection or `#f' if no such object
is available. Objects which are returned in this way are removed
from the guardian.
See R. Kent Dybvig, Carl Bruggeman, and David Eby (1993)
"Guardians in a Generation-Based Garbage Collector". ACM SIGPLAN
Conference on Programming Language Design and Implementation, June
1993.