From: David Vázquez Date: Mon, 15 Apr 2013 17:17:12 +0000 (+0100) Subject: Longer README X-Git-Url: http://repo.macrolet.net/gitweb/?p=jscl.git;a=commitdiff_plain;h=55428076ad4fd593b99833123aebef197bcbc47d Longer README --- diff --git a/README.org b/README.org index 558385a..5bcefd5 100644 --- a/README.org +++ b/README.org @@ -1,4 +1,28 @@ * Ecmalisp -Ecmalisp is a in-progress Lisp-to-Javascript compiler, which is -bootstrapped from Common Lisp and executed from the browser. + Ecmalisp is a Lisp-to-Javascript compiler, which is bootstrapped + from Common Lisp and executed from the browser. + + You can try a demo [[http://davazp.net/ecmalisp/ecmalisp.html][here]]. + + It is just an experiment, of course. But it supports partially most + common special operators, functions and macros. In particular: + + - Multiple values + - Explicit control flow ([[http://www.lispworks.com/documentation/HyperSpec/Body/s_tagbod.htm][tagbody]] and [[http://www.lispworks.com/documentation/HyperSpec/Body/s_go.htm][go]]) + - Static and dynamic non local exist ([[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]]). + - Lexical and special variables. However, declare expressions are + missing, but you can /proclaim/ special variables. + - Optional and keyword arguments + - SETF places + - Packages + + The compiler is very verbose, some simple optimizations or + /minification/ could help to deal with it. + + Most of the above features are incomplete. It is not so bad because + so the compiler is not too heavy, but it would be great if we were + 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 + implementation, or even [[http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/oop/0.html][CLOS]] or non-CLOS OOP. + + /Feel free to hack it yourself/