mirror of
https://github.com/kanaka/mal.git
synced 2024-10-26 22:28:26 +03:00
.. | ||
.gitignore | ||
core.sml | ||
Dockerfile | ||
env.sml | ||
LargeInt.sml | ||
main.sml | ||
Makefile | ||
printer.sml | ||
reader.sml | ||
README.md | ||
run | ||
step0_repl.mlb | ||
step0_repl.sml | ||
step1_read_print.mlb | ||
step1_read_print.sml | ||
step2_eval.mlb | ||
step2_eval.sml | ||
step3_env.mlb | ||
step3_env.sml | ||
step4_if_fn_do.mlb | ||
step4_if_fn_do.sml | ||
step6_file.mlb | ||
step6_file.sml | ||
step7_quote.mlb | ||
step7_quote.sml | ||
step8_macros.mlb | ||
step8_macros.sml | ||
step9_try.mlb | ||
step9_try.sml | ||
stepA_mal.mlb | ||
stepA_mal.sml | ||
types.sml | ||
util.sml |
SML-MAL
This is Make-A-Lisp in Standard ML.
Building
Just run make
.
Building requires a Standard ML compiler with basis library. This MAL implementation has been tested and works with Poly/ML, MLton, and Moscow ML.
On Ubuntu, you can run apt-get install polyml libpolyml-dev
.
By setting sml_MODE
to polyml
, mosml
, or mlton
on invoking make
you
can select which compiler to use. The Makefile has some hacks to figure out
how to make the different compilers build everything.
Running
You can build a mal
binary from the final step with make dist
:
$ make dist
$ ./mal
Mal [sml]
user> (map (fn* (x) (println "Odelay!")) [1 2 3 4 5])
Odelay!
Odelay!
Odelay!
Odelay!
Odelay!
(nil nil nil nil nil)
user>