5 Mal is an interpreter for a subset of the Clojure programming
6 language. Mal is implemented from scratch in 12 different languages:
22 Mal is also a learning tool. Each implentation of mal is separated
23 into 11 incremental, self-contained (and testable) steps that
24 demonstrate core concepts of Lisp. The last step is capable of
25 self-hosting (running the mal implemenation of mal).
27 The mal (make a lisp) steps are:
42 Mal was presented publicly for the first time in a lightning talk at
43 Clojure West 2014 (unfortunately there is no video). See
44 mal/clojurewest2014.mal for the presentation that was given at the
45 conference (yes the presentation is a mal program).
47 ## Building/running implementations
58 The C implementation of mal requires the following libraries: glib,
59 libffi6 and either the libedit or GNU readline library.
69 The C# implementation of mal has been tested on Linux using the Mono
70 C# compiler (mcs) and the Mono runtime (version 2.10.8.1). Both are
71 required to build and run the C# implementation.
84 lein with-profile +stepX trampoline run
92 mvn -quiet exec:java -Dexec.mainClass=mal.stepX_YYY
94 mvn -quiet exec:java -Dexec.mainClass=mal.stepX_YYY -Dexec.args="CMDLINE_ARGS"
107 Running the mal implementation of mal involves running stepA of one of
108 the other implementations and passing the mal step to run as a command
113 IMPL_STEPA_CMD ../mal/stepX_YYY.mal
131 ### Postscript Level 2/3
135 gs -q -dNODISPLAY stepX_YYY.ps