mirror of
https://github.com/kanaka/mal.git
synced 2024-11-09 18:06:35 +03:00
7b23c7ed61
The try block needs to happen and be returned and not continue the TCO loop. If it does then the successful result of a try block gets evaluated an extra time so something like this `(try* (list 1) (catch* e (prn :e e)))` will cause an exception. If an exception occurs, then the catch block of a try/catch can loop/TCO without issue but not the initial try form/block. |
||
---|---|---|
.. | ||
tests | ||
.gitignore | ||
Core.cpp | ||
Debug.h | ||
docker.sh | ||
Dockerfile | ||
Environment.cpp | ||
Environment.h | ||
Makefile | ||
MAL.h | ||
Reader.cpp | ||
ReadLine.cpp | ||
ReadLine.h | ||
README.md | ||
RefCountedPtr.h | ||
run | ||
StaticList.h | ||
step0_repl.cpp | ||
step1_read_print.cpp | ||
step2_eval.cpp | ||
step3_env.cpp | ||
step4_if_fn_do.cpp | ||
step5_tco.cpp | ||
step6_file.cpp | ||
step7_quote.cpp | ||
step8_macros.cpp | ||
step9_try.cpp | ||
stepA_mal.cpp | ||
String.cpp | ||
String.h | ||
Types.cpp | ||
Types.h | ||
Validation.cpp | ||
Validation.h |
Compilation notes
Mac OSX
This C++ implementation was developed on Mac OS X Yosemite, and uses the stock g++ compiler.
The only other requirement is GNU Readline, which I got from homebrew.
brew install readline
You may need to edit the READLINE path in the Makefile.
Ubuntu 14.10/15.04
This should compile on Ubuntu 14.10 and 15.04 with the following packages
apt-get install clang-3.5 libreadline-dev make
Docker
For everyone else, there is a Dockerfile and associated docker.sh script which can be used to make and run this implementation.
* build the docker image
./docker build
* make the MAL binaries:
./docker make
* run one of the implementations:
./docker run ./stepA_mal
* open a shell inside the docker container:
./docker run