Skip to content

chr15m/awesome-clojure-likes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 

Repository files navigation

Mapping the constellation of Clojure-like programming languages.

Contribute. More.

Official variants

Clojure-likes

Fast native Clojure scripting runtime. Avoid switching between Clojure and bash scripts. Enjoy your parens on the command line.

  • Instant startup.
  • Batteries included.
  • Cross-platform.
  • Multi-threaded.
  • Task runner.
  • Libraries & "pods".
  • Actively developed.

Ad-hoc CLJS scripting on Node.js. Nbb's main goal is to make it easy to get started with ad hoc CLJS scripting on Node.js.

  • Fast startup without relying on a custom version of Node.js.
  • Small artifact (current size is around 1.2MB).
  • First class macros.
  • Support building small TUI apps using Reagent.
  • Complement babashka with libraries from the Node.js ecosystem.

Squint is a compiler for an experimental dialect of ClojureScript. A tool to target JS for anything you would not use ClojureScript for, for whatever reason: performance, bundle size, ease of interop, etc.

Cherry is an experimental ClojureScript to ES6 module compiler. Reducing friction between ClojureScript and JS tooling.

  • Compile cljs to js with various tradeoffs.
  • Available on NPM and can be used from JS tooling.

Hy is a wonderful dialect of Lisp that’s embedded in Python.

  • Try it.
  • Source code.
  • High level of interop with host language.
  • All of available Python tooling available.
  • Actively developed.

A small, fast, native lisp with "magical" powers.

  • Implemented in RPython.
  • Runs on own VM.
  • Dormant project.

Clojure implemented on the Erlang VM.

  • Try it.
  • Source code.
  • Interoperability as smooth as possible, just like Clojure proper and ClojureScript do.
  • Provide most Clojure abstractions.
  • Provide all Erlang abstractions and toolset.
  • Include a default OTP library in Clojerl.

Lua Lisp Language.

A functional, statically-typed Lisp that will run on several platforms, such as the Java Virtual Machine and JavaScript interpreters.

  • Implemented in Clojure.
  • Inspied by Haskell, Clojure, ML.
  • Actively developed.

A little Clojure-like LISP in JavaScript.

  • Try it
  • Native JavaScript types and function calls.
  • Maintenance mode.

Joker is a small interpreted dialect of Clojure written in Go. It is also a Clojure(Script) linter.

  • Source code
  • Fast startup time.
  • Sane error messages and stacktraces.
  • Batteries included: send HTTP requests, read and parse JSON, work with file system, start external processes, etc.

A Hard Real-Time Clojure for Lisp Machines.

  • Implemented in Clojure.
  • Compiles to ISO C++11.
  • Restricted subset of Clojure.
  • Embedded systems focus.

A functional programming language that expands into JavaScript through a very thin layer of sweet.js macros.

  • Source code
  • Implemented in Javascript
  • Intermix LISP code with JavaScript.
  • Dormant project.

A Clojure dialect that compiles to native executable using the Clang compiler.

  • Self hosted.

Clojure-inspired Lisp that transpiles to Ruby.

  • Implemented in Ruby.
  • Tries to cover Ruby's functionality with more concise code forms.
  • Dormant project.

Modern Lisp variant inspired by Python, Clojure & Arc.

  • Implemented in C++.
  • Modern, OO, both statically & dynamically typed.
  • Dormant project.

TimL is a Lisp dialect implemented in and compiling down to VimL, the scripting language provided by the Vim text editor.

  • Implemented in Vim's scripting language.
  • Dormant project.

Apricot is a programming language inspired by Clojure and Lisp that runs on the Rubinius VM.

  • Implemented in Ruby.
  • Dormant project.

A functional programming language and interpreter written in GNU Bash 4.

  • Implemented in Bash 4.
  • Dormant project.

An OCaml compiler for an untyped lisp.

  • Implemented in OCaml.
  • Runs on the LLVM JIT.
  • Dormant project.

A tiny implementation of Clojure in Clojure.

  • Made to evaluate code from user input where eval is unsafe or unavailable.
  • Early development.

jank is a native Clojure dialect hosted on LLVM with C++ interop.

  • Strong Clojure compatibility; if it's valid Clojure and ClojureScript, it'll be valid jank.
  • Built on an LLVM-based JIT. With AOT enabled, both statically and dynamically linked executables can be generated.
  • Use your favorite nREPL editor plugin. jank uses an LLVM-based JIT to compile machine code on the fly.
  • Utilize LLVM to link with your existing code or compile to WASM.
  • Work in progress

Heavily influenced by Clojure APIs, Macros, persistent data structure. Previously compiling to Clojure.

  • Implemented in Rust. It was previously compiled to Clojure to run.
  • Builtin persistent data structure. Shares many functions/macros API designs from Clojure.
  • Designed like Lisp but prefers indentation based syntax or GUI code editor.

Mal is a Clojure inspired Lisp interpreter. Mal is implemented in 63 languages.

Notable/usable implementations follow.

Mal (Make A Lisp) compiler

  • Compiler for Mal, written in Mal itself.
  • Compiles a Mal program to LLVM assembly language (IR), and then uses the LLVM optimizer, assembler and gcc linker to produce a binary executable.

A Delightfully Diminutive Lisp. Implemented in < 1 KB of JavaScript with JSON source.

  • Implemented in PHP.
  • Interop with & runs where PHP does.
  • Implements the #mal IRC bot.

About

Curated list of Clojure-like programming languages.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published