3 Ecmalisp is a Lisp-to-Javascript compiler, which is bootstrapped
4 from Common Lisp and executed from the browser.
6 You can try a demo [[http://davazp.net/ecmalisp/ecmalisp.html][here]].
8 It is just an experiment, of course. But it supports partially most
9 common special operators, functions and macros. In particular:
12 - Explicit control tranfers ([[http://www.lispworks.com/documentation/HyperSpec/Body/s_tagbod.htm][tagbody]] and [[http://www.lispworks.com/documentation/HyperSpec/Body/s_go.htm][go]])
13 - Static and dynamic non local exit ([[http://www.lispworks.com/documentation/HyperSpec/Body/s_catch.htm][catch]], [[http://www.lispworks.com/documentation/HyperSpec/Body/s_throw.htm][throw]]; [[http://www.lispworks.com/documentation/HyperSpec/Body/s_block.htm][block]], [[http://www.lispworks.com/documentation/HyperSpec/Body/s_ret_fr.htm][return-from]]).
14 - Lexical and special variables. However, declare expressions are
15 missing, but you can /proclaim/ special variables.
16 - Optional and keyword arguments
20 The compiler is very verbose, some simple optimizations or
21 /minification/ could help to deal with it.
23 Most of the above features are incomplete. It is not so bad because
24 so the compiler is not too heavy, but it would be great if we were
25 just enough compliant to include a [[http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/code/iter/loop/mit/0.html][loop implementation]], a format
26 implementation, or even [[http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/oop/0.html][CLOS]] or non-CLOS OOP.
28 /Feel free to hack it yourself/