[comp.lang.lisp] Psuedo-multiprogramming in Common Lisp

jbn@glacier.UUCP (02/15/87)

       Is there any kind of package which provides some sort of
"multitasking" in Common Lisp?  I'm converting a Conniver program, and
need just the facilities to handle Conniver's TAG and GO constructs.
The basic idea is that one declares various labels with TAG, which
causes the label, its enclosing block, and the call stack all the way
up to have indefinite extent; as long as a pointer to the tag exists
somewhere, the whole call stack must be kept around, because it can
be reactivated with a GO.  This is not like THROW or RETURN, which can
only unwind the stack.  TAG implies the existence of multiple stacks.
       This is similar to, but not quite like, a closure, in that a
closure always returns to the caller of the closure, but a GO doesn't
return at all; control returns up the saved call stack activated by the GO.
The presence of closures in Common Lisp indicates that the heavy machinery
needed to make this work is in place, but I don't see any way to get at it.
Solutions which require interpreting everything, by the way, are
not helpful; I need the speed.
       KCL definitely lacks any extensions in this area.  Does Lucid or
Zetalisp?  What about Scheme?  Is Scheme available for SUN machines?
Advice from the Stanford Lisp community would be appreciated.

					John Nagle
					Center for Design Research