Awesome LISP Family
A list of lisp-flavored programming languages implemented on top of existing programming languages.
Classification
-
Type-A: Simple syntax mapping
These languages usually just provide s-expressions (parentheses) syntax and are translated to the target language without extra features/semantics. Also sometimes being called transpilers. -
Type-B: Syntax and additional semantics
In addition to translating the syntax some additional features/semantics that are not present in the target language are added. Usually if a language does not fit in other category, it can be considered being a Type-B. -
Type-C: Clojure-like
Distintive syntax that besides parentheses also uses brackets and curly braces. Distinctive features are persistent data structures, namespaces and vars, protocols. -
Type-L: Common Lisp
Implementing ANSI Common Lisp standard or being inspired by it. -
Type-S: Scheme
Implementing some of RxRS standards or being inspired by Scheme.
Languages
Listed primarily by the language which can be used for interoperability / FFI.
Language section does not necessarily mean the language of the implementation. For example Ferret
compiles into C++
but the compiler is written in Clojure
. Or Carp
interops with C
but it is mostly written in Haskell
. In case of SBCL
it contains only small amounts of C
, but it is implemented almost entirely in Common Lisp
.
- Multi Lang
- Cobol
- Common Lisp
- Scheme
- C/C++
- C#
- Elm
- Erlang
- Fortran
- Go
- Haskell
- Java
- JavaScript
- Julia
- Lua
- Objective-C
- OCaml
- PHP
- Perl
- Python
- R
- Rust
- Shell
- VHDL
- WASM
Multi Lang
Name | Active | Type | Target |
---|---|---|---|
Lux | B | ||
Mal | *1 | ||
STELLA | ? | ||
Wax | * | ||
Shen | B | ||
Zick Standard Lisp | ? |
Cobol
Name | Active | Type | Target |
---|---|---|---|
Cisp | L |
Common Lisp
Name | Active | Type | Target |
---|---|---|---|
SBCL | L | ||
Clasp | L | ||
ECL | L | ||
CLISP | L | ||
Clozure CL | L | ||
Coalton | L |
See list of additional implementations.
Scheme
Name | Active | Type | Target |
---|---|---|---|
Racket | S | ||
STklos | S | ||
Bigloo | S | native | |
Gerbil | S | ||
Gauche | S | ||
Chibi-Scheme | S | ||
Gambit | S | ||
Guile | S | ||
Loko Scheme | S | ||
Cisco Chez | S | ||
Racket Chez | S | ||
Rabbit | S | ||
CHICKEN Scheme | S | ||
Cyclone | S | ||
Microscheme | S | ||
Vicare | S | ||
Ikarus | S |
See list of additional implementations and benchmarks.
The Development of Chez Scheme
C/C++
Name | Active | Type | Target |
---|---|---|---|
Janet | B | ||
Cakelisp | A | ||
Dale | B | ||
Owl Lisp | S | ||
jo_clojure | C | ||
Extempore | S | ||
Maru | B | ||
Liz | A | ||
Toccata | C | ||
Lcc | A | ||
PicoLisp | B | ||
Ferret | C | ||
C-Mera | A | ||
FemtoLisp | S |
C#
Name | Active | Type | Target |
---|---|---|---|
Clojure-CLR | C | ||
IronScheme | S | ||
Arcadia | C |
Elm
Name | Active | Type | Target |
---|---|---|---|
Enclojure | C |
Erlang
Name | Active | Type | Target |
---|---|---|---|
Lisp Flavored Erlang | A2 | ||
Joxa | A1 | ||
Clojerl | C | ||
Kapok | C | ||
scm | S |
Fortran
Name | Active | Type | Target |
---|---|---|---|
fscheme | S | ||
Schemetran | A |
Go
Name | Active | Type | Target |
---|---|---|---|
Joker | C | ||
Slick | L | ||
Zygo | B | ||
ZYLISP | A |
Haskell
Name | Active | Type | Target |
---|---|---|---|
Carp | B |
Java
Name | Active | Type | Target |
---|---|---|---|
ABCL | L | ||
Clojure | C | ||
Kawa | S | ||
Armed Bear Clojure | C+L | ||
PicoLisp | B |
JavaScript
Name | Active | Type | Target |
---|---|---|---|
BiwaScheme | S | ||
ClojureScript | C | ||
JACL | L | ||
LIPS | S | ||
RacketScript | S | ||
Valtan | L | ||
Lumen | A | ||
JSLisp | L | ||
eslisp | A | ||
Parenscript | L | ||
Wisp | C | ||
Whalesong | S |
Julia
Name | Active | Type | Target |
---|---|---|---|
LispSyntax.jl | A |
Lua
Name | Active | Type | Target |
---|---|---|---|
Fennel | A | ||
Lumen | A | ||
Urn | ? |
Objective-C
Name | Active | Type | Target |
---|---|---|---|
nu | ? | ||
DreamLisp | B |
OCaml
Name | Active | Type | Target |
---|---|---|---|
Reason-Lisp | A |
Perl
Name | Active | Type | Target |
---|---|---|---|
Bel | ? |
PHP
Name | Active | Type | Target |
---|---|---|---|
Phel | C |
Python
Name | Active | Type | Target |
---|---|---|---|
Hy | A1+C* | ||
Hissp | A | ||
Pixie | B |
R
Name | Active | Type | Target |
---|---|---|---|
llr | C |
Rust
Name | Active | Type | Target |
---|---|---|---|
GameLisp | B | ||
ClojureRS | C | ||
BLisp | B | ||
Ketos | B | ||
Rustly | C |
Shell
Name | Active | Type | Target |
---|---|---|---|
Fleck | A | ||
Gherkin | B |
VHDL
Name | Active | Type | Target |
---|---|---|---|
VhdlLisp | ? |
WASM
Name | Active | Type | Target |
---|---|---|---|
Liz | A | ||
Schism | S | ||
WASM Scheme | S | ||
clj-wasm | A | ||
Arboreta WASM | ? |
Misc
- Bel - self-hosted lisp dialect, see also markdown formatted mirror
- Bel Clojure - implementation in Clojure, includes continuations, Java numbers and strings, read blog post
- Language::Bel - implementation of Bel in Perl 5, includes extensive test suite
- Chime - implementation of Bel written in Haskell
- Babybel - Ruby implementation of Bel
- Bel-sml - implementation written in Standard ML
- uLisp - Lisp for microcontrollers, fits into 2 Kbytes of RAM
- CLJSL - subset of Clojure compiled to GLSL for GPU programming
- A list of more Clojure-like languages.
- Additional "write C in Lisp" projects (most of them not ready for a prime time).
- Build your own lisp - a book describing building a Lisp dialect
- See also list of languages implemented in Lisp.
- Map of Common Lisp implementations
- Benchmarks of Scheme implementations
- awesome-lisp-languages
- awesome-lisp-companies
- awesome-clojure
Contribute
Anything incorrect? Is there an interested project that is missing? Open an issue or PR to request adding a project to the list.