Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Some examples of lisp macros:</p> <ul> <li><a href="http://common-lisp.net/project/iterate" rel="noreferrer">ITERATE</a> which is a funny and extensible loop facility</li> <li><a href="http://www.pps.jussieu.fr/~jch/software/cl-yacc/" rel="noreferrer">CL-YACC</a>/<a href="http://common-lisp.net/project/fucc" rel="noreferrer">FUCC</a> that are parser generators that generate parsers at compile time</li> <li><a href="http://www.weitz.de/cl-who/" rel="noreferrer">CL-WHO</a> which allows specifying html documents with static and dynamic parts</li> <li><a href="http://common-lisp.net/project/parenscript/" rel="noreferrer">Parenscript</a> which is a javascript code generator</li> <li>Various simple code-wrappers, e.g., error handlers (I have a with-gtk-error-message-handler that executes code and shows GtkMessageDialog if unhandled error occurs), executors (e.g., given a code, execute it in different thread; I have a within-main-thread macro that executes code in different threads; <a href="http://marijn.haverbeke.nl/pcall/" rel="noreferrer">PCall</a> library uses macros to wrap code to be executed concurrently)</li> <li>GUI builders with macros (e.g., specify widgets hierarchy and widgets' properties and have a macro generate code for creation of all widgets)</li> <li>Code generators that use external resources during compilation time. E.g., a macro that processes C headers and generates FFI code or a macro that generates classes definitions based on database schema</li> <li>Declarative FFI. E.g., specifying the foreign structures, functions, their argument types and having macros to generate corresponding lisp structures, functions with type mapping and marshaling code</li> <li>Continuations-based web frameworks for Common Lisp use macros that transform the code into CPS (continuation passing style) form.</li> </ul>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload