kanaka / mal
git clone https://github.com/kanaka/mal.git
🔥 on GitHub Trending today
mal - Make a Lisp
+-1
stars, 24h · #60,471
+~-7
stars, 7 days · #60,545
+30
stars, 30 days · #14,301
11k
★ total · -0% this week
2.7k
forks · 25 open issues
Star history (as recorded here)
LanguageAssembly
License—
Created2014-03-24 (12y ago)
Last push1y ago
Watchers180
OwnerUser
Seen on GitHub Trending
- 2026-10-22 — #7 daily in assembly
- 2026-10-22 — #11 monthly in assembly · +26 ★
- 2026-10-21 — #9 monthly in assembly · +28 ★
- 2026-10-20 — #9 monthly in assembly · +30 ★
GitHub topics
maldockerlisplisp-interpretercjavajavascriptpythonc-plus-plusc-sharpphprubyrswiftbashmakefileclojurescalalearn-to-codewebassembly
Links
- GitHub: github.com/kanaka/mal
- Releases · Issues · Hacker News mentions
README excerpt
# mal - Make a Lisp ## Description **1. Mal is a Clojure inspired Lisp interpreter** **2. Mal is a learning tool** Each implementation of mal is separated into 11 incremental, self-contained (and testable) steps that demonstrate core concepts of Lisp. The last step is capable of self-hosting (running the mal implementation of mal). See the make-a-lisp process guide. The make-a-lisp steps are: * step0_repl * step1_read_print * step2_eval * step3_env * step4_if_fn_do * step5_tco * step6_file * step7_quote * step8_macros * step9_try * stepA_mal Each make-a-lisp step has an associated architectural diagram. That elements that are new for that step are highlighted in red. Here is the final architecture once step A is complete: If you are interested in creating a mal implementation (or just interested in using mal for something) you are welcome to to join our Discord. In addition to the make-a-lisp process guide there is also a mal/make-a-lisp FAQ where I attempt to answer some common questions. **3. Mal is implemented in 89 languages (95 different implementations and 118 runtime modes)** | Language | Creator | | -------- | ------- | | Ada | Chris Moore | | Ada #2 | Nicolas Boulenguez | | GNU Awk | Mitsuru Kariya | | Bash 4 | Joel Martin | | BASIC (C64 & QBasic) | Joel Martin | | BBC BASIC V | Ben Harris | | C | Joel Martin | | C #2 | Duncan Watts | | C++ | Stephen Thirlwall | | C# | Joel Martin | | ChucK | Vasilij Schneidermann | | Clojure (Clojure & ClojureScript) | Joel Martin | | CoffeeScript | Joel Martin | | Common Lisp | Iqbal Ansari | | Crystal | Linda_pp | | D | Dov Murik | | Dart | Harry Terkelsen | | Elixir | Martin Ek | | Elm | Jos van Bakel | | Emacs Lisp | Vasilij Schneidermann | | Erlang | Nathan Fiedler | | ES6 (ECMAScript 2015) | Joel Martin | | F# | Peter Stephens | | Factor | Jordan Lewis | | Fantom | Dov Murik | | Fennel | sogaiu | | Forth | Chris Houser | | GNU Guile | Mu Lei | | GNU Smalltalk | Vasilij Schneidermann | | Go | Joel Martin | | Groovy | Joel Martin | | Hare | Lou Woell | | Haskell | Joel Martin | | Haxe (Neko, Python, C++, & JS) | Joel Martin | | Hy | Joel Martin | | Io | Dov Murik | | Janet | sogaiu | | Java | Joel Martin | | Java Truffle (Truffle/GraalVM) | Matt McGill | | JavaScript (Demo) | Joel Martin | | jq | Ali MohammadPur | | Julia | Joel Martin | | Kotlin | Javier Fernandez-Ivern | | LaTeX3 | Nicolas Boulenguez | | LiveScript | Jos van Bakel | | Logo | Dov Murik | | Lua | Joel Martin | | GNU Make | Joel Martin | | mal itself | Joel Martin | | MATLAB (GNU Octave & MATLAB) | Joel Martin | | miniMAL (Repo, Demo) | Joel Martin | | NASM | Ben Dudson | | Nim | Dennis Felsing | | Object Pascal | Joel Martin | | Objective C | Joel Martin | | OCaml | Chris Houser | | Perl | Joel Martin | | Perl 6 | Hinrik Örn Sigurðsson | | PHP | Joel Martin | | Picolisp | Vasilij Schneidermann | | Pike | Dov Murik | | PL/pgSQL (PostgreSQL) | Joel Martin | | PL/SQL (Oracle) | Joel Martin | | PostScript | Joel Martin | | PowerShell |