mark and sweep garbage collector for comp.lang.lisp