![](https://secure.gravatar.com/avatar/8fd2c6797f3bf550f16d5fb7480539d9.jpg?s=120&d=mm&r=g)
[oops, I keep forgetting to add cl-pro email when replying.] IMHO: DSL can be made of a varying mix of abstraction, syntax and semantics. All of which can be achieved within CL using interpreter & compiler, macros, closures, reader macros, compiler macros, printing protocol and CLOS. These will help a lot, both the developer and the user. check the following examples: Corman CL Assembler DSL (check the source code for assembler.lisp and how elegantly normal x86 assembler syntax was introduced into CL code) http://www.cormanlisp.com/index.html SBCL VOPs: http://sbcl-internals.cliki.net/Adding%20VOPs http://paste.lisp.org/display/41937 GOAL: Game Object Assembly Lisp ("...intermix assembly instructions seamlessly with higher-level code...") http://www.gamasutra.com/view/feature/2985/postmortem_naughty_dogs_jak_and_.... CLSQL: SQL syntax CL-Typesetting: typesetting DSL Prolog interpreter or compiler. those are the ones I remember directly when talking about DSL in common-lisp - Ala'a