cl-walker implements an sexp → CLOS AST tree transformation (and vice versa).

It walks the sexp, expands macros, follows the lexical environment and resolves local functions/macros, etc. All these things are configurable, so it can be used for things like compiling an sexp based javascript (see cl-quasi-quote), lisp2 → lisp1 transformations, serializable delimited continuations (see cl-delico).

It was originally written by Marco Baringer as part of his Arnesi library, and later factored out in a standalone library and further developed by Attila Lendvai.

Topics: serialization continuation metaprogramming