If the problem is simply "implement Common Lisp special variables", then the most likely solution is to create a LispSpecialVar PMC. In the same way that a MultiSub acts like a sub but internally stores a list of subs, the LispSpecialVar would act like an ordinary variable to Parrot internals and to all other languages, but would internally store a stack of previous dynamic bindings.

Likewise, the behavior at the point when a PMC is shared across threads is determined by the 'share' and 'share_ro' vtable functions, and so easily implemented within a LispSpecialVar PMC.

Allison

Reply via email to