MAL - Make a Lisp
(github.com)MAL은 Clojure에서 영감을 받은 LISP 인터프리터로,79개의 개발언어로 각각 구현됨.
똑같은 인터프리터를 여러개의 언어로 구현해둬서, 새로운 언어를 배우는 용도로 사용 가능.
코드는 11단계로 나뉘어져 있고, 최종단계는 셀프호스팅(MAL 구현체가 MAL을 다시 실행)
Javascript 기반의 MAL 구현체에서 바로 사용해볼수 있음.
Mal Web REPL - https://kanaka.github.io/mal/
구현의 단계별 설명
https://github.com/kanaka/mal/blob/master/process/guide.md
The Make-A-Lisp Process
Step 0: The REPL
Step 1: Read and Print
Step 2: Eval
Step 3: Environments
Step 4: If Fn Do
Step 5: Tail call optimization
Step 6: Files, Mutation, and Evil
Step 7: Quoting
Step 8: Macros
Step 9: Try
Step A: Metadata, Self-hosting and Interop