README.org

December 11, 2025 · View on GitHub

  • Languages, and about languages, on the BEAM

** Contents :TOC:

  • [[#languages-and-about-languages-on-the-beam][Languages, and about languages, on the BEAM]]
    • [[#overview][Overview]]
    • [[#54-languages-on-the-beam][54 Languages on the BEAM]]
    • [[#about-languages][About Languages]]
    • [[#about-the-beam][About the BEAM]]
    • [[#erlang-and-types][Erlang and Types]]

** Overview

This document is intended to list (a) languages implemented to run on the BEAM, the Erlang virtual machine, and (b) documents (articles & presentations) about the hows and whys of writing languages to run on the BEAM.

For the moment, and for want of a better name, I call such languages "BEAM languages" (although I have heard that there are other Erlang VMs, ...).

I would like the document to be comprehensive, or at least "representative". If I have missed a BEAM language, some noteworthy discussion about a BEAM language, or documentation about implementing languages targetting the BEAM, please let me know through the usual channels (issues, forks, PRs, tweets, emails, etc.).

Thank you.

** 54 Languages on the BEAM

First Erlang itself, then the 6 main [[#lisps][Lisp-influenced]] languages, then the 22 [[#statically-typed-languages][statically-typed]] languages, then the 25 [[#etc][others]]. Adding Erlang, that's 54 languages in all.

In the latest update (December 2025), there are now too many lisps implemented in erlang and (mostly) elixir in github to count. There are also quite a few language projects I missed earlier. Projects which haven't been updated since 2018 I haven't always included. Many languages I didn't include here are in [[https://github.com/stars/michallepicki/lists/beam-languages][Michał Łępicki's beam languages]] list.

*** erlang itself

*** lisps **** clojerl (2015+)

clojerl - Clojure for the Erlang VM

**** lfe (2008+)

**** erlscheme (-2025)

" An implementation of the Scheme programming language for the Erlang/OTP VM."

**** joxa (2011-2020)

***** Differences Between Joxa and LFE

***** Joxa: A Full Featured Lisp on the Erlang VM

**** kapok (2015-2018)

**** 'the concurrent schemer' (2013-2014)

*** statically-typed languages **** ActorForth (2020-5)

"A strongly typed Forth-like language ultimately intended to make it easy to build DSLs with an actor concurrency model. Implemented in Erlang. Should get along with anything running on the BEAM."

**** alpaca (2016+)

**** caramel (2020?+)

An Erlang backend to the OCaml compiler

**** cure (2025+)

A strongly-typed, dependently-typed programming language for the BEAM virtual machine with built-in finite state machines, complete import system, and comprehensive standard library.

**** cuneiform (2013+)

**** elchemy (2017+)

An Elm syntax front-end for Elixir (i.e., converts Elm-style input language into Elixir source code).

**** elm-beam (2018)

"Exploring Elm on the Erlang VM"

See also blog post [[https://kofi.sexy/blog/elm-beam][elm-beam]].

**** eml (2012)

"eml - Erlang flavored by Some ML"

**** erlml (-2018)

"erlml - an ML implementation for the Erlang/OTP VM"

**** erty (2023)

Erty is Erlang but with stronger support for types (ERlang with TYpes).

**** fez (2017+)

fez - fsharp to core erlang compiler experiment

**** fika (2020)

A statically typed functional programming language for the web

**** gleam (2016+)

gleam - "A statically typed language for the Erlang VM"

**** hamler (2020)

Haskell-style functional programming language running on Erlang VM.

**** haskerl et al. (1993-2014)

**** idris-erlang (2014-17)

This is an Idris package (therefore requiring Haskell and Idris) which compiles Idris source code into erlang source code.

**** idris2-erlang (2020+)

An Erlang code generator for Idris 2 (eg compiles Idris 2 programs to Erlang source code or to BEAM).

**** lark (-2022)

"... designed to be simple to use, easy to read and provide powerful static guarantees."

**** purerl (2016+)

Erlang backend for PureScript

**** purescript-backend-erl (-2025)

"PureScript to Erlang optimizing compiler"

**** rufus (2018+)

"A general-purpose programming language for the BEAM"

There's website source, but no website. Some docs, eg here:

Looks like it's implemented in erlang too!

**** sesterl (2020+)

A "Session-Typed Erlang", an ML-inspired statically-typed Erlang

**** shen-erl (-2019)

Erlang port of the [[https://github.com/Shen-Language/shen-sources][Shen programming language]].

**** terp (-2021)

" A functional programming language with lisp syntax and ML semantics that runs on the BEAM."

*** etc **** bada (2023)

"Simple Programming Language that compiles to BEAM bytecode"

**** dfs (2018-2024)

"Essentially InfluxData's [[https://docs.influxdata.com/kapacitor/v1/reference/tick/][TICKscript]] for Erlang"

**** efene (2009+)

**** elixir (2011+)

**** ephp (2013+)

An erlang interpreter for PHP

Presumably as used by [[https://bragful.com][Bragful]] --- "A resilient and scalable PHP".

**** er (-2020)

" er ~ emergency room (a BEAM language "improving" on Erlang)"

**** erl2 (2012)

**** erlog (2008-2018)

***** Backtracking in Erlang, part 1 - control

**** erlyjs (2008-2013)

The original repo (on Google Code) no longer exists, but there are several forks, e.g.:

A couple of blog posts from 2008 (the second is by the original developer of erlyjs):

**** exprolog (-2018)

Exprolog is a logic programming language(DSL) like Prolog built on top of Elixir.

**** ffe: Forth-flavoured Erlang (2014-2016)

**** gdminus (-2024)

"gdminus is an implementation of [[https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html][GDScript]] for Erlang, allowing Erlang applications to share code with [[https://godotengine.org/][Godot]]."

**** grant_lang (2020)

" A (terrible) BEAM programming language"

**** hoeg (2020)

"a toy concatenative language running on the BEAM"

**** interfix (2015)

**** krarup (2024)

"krarup is an Erlang dialect for composing concurrent data processing flows."

**** luerl (2012+)

**** noether (2017-2018)

"... of a C/C++/Java-friendly language to do easier the adoption of the BEAM."

**** OTPCL (2017+)

Open Telecom Platform Command Language: "a scripting language designed to integrate with and extend applications written in BEAM-based languages"

**** plex (-2016)

Plex is a simple programming language based on a notion of objects as extensible records. It supports eager evaluation, first-class functions and dynamic types, but tries to check the integrity of programs statically — that is, at compile time.

**** reia (-2012)

**** slick (2021)

"A duck-typed, dynamic oop language with a fully redundant actor-model, running on top of the BEAM architecture."

**** tele (2024-5)

"Alternative syntax for Erlang"

**** template_compiler (2016-)

This compiler is a complete rewrite of the Erlang Django (ErlyDTL) template language fork used in Zotonic. In contrast with ErlyDTL the template_compiler generates small Erlang modules which are shared between different templates and sites.

**** xerl (2013)

Five web articles in 2013 starting with:

** About Languages *** Other BEAM Langagues lists

*** Implementing languages on the BEAM (4)

(video)

*** Implementing languages on the BEAM (3)

(video)

*** Efene and the BEAM Community

(slides & video)

*** How BEAMs are made

Slides with link to github repo

*** Eric Merritt, Erlang and distributed systems expert, gives his views on BEAM languages, Hindley–Milner type systems and new technologies

(article/interview, with links to podcast & video)

*** Create Your Own Language: How to implement a language on top of Erlang Virtual Machine (BEAM)

(slides)

*** Implementing Languages on the BEAM (2)

(slides & video)

*** Implementing Languages on the BEAM (1)

(video)

*** Erlang, LFE, Joxa and Elixir: Established and Emerging Languages in the Erlang Ecosystem

(slides)

** About the BEAM

*** The BEAM Book

A description of the Erlang Runtime System ERTS and the virtual Machine BEAM https://github.com/happi/theBeamBook

*** The BEAM Toolbox

A list of tools and libraries that are useful for BEAM languages like efene, erlang, LFE and Elixir projects. http://efene.org/toolbox.html

** Erlang and Types

These first two papers are linked from Philip Wadler's erlang page: http://homepages.inf.ed.ac.uk/wadler/topics/erlang.html

*** A practical subtyping system for Erlang (1997)

(paper)

*** The great type hope (2002)

(slides)

*** Pure Type System for Erlang (2014+)

*** Gradualizer: A Gradual Type System for Erlang (2018+)

A gradual typing system and static code analysis tool for Erlang.

The type system is based on "Gradual Typing for Functional Languages" (Siek & Taha, 2006) (see doc/GTLC.hs):

*** ErlT - experimental erlang dialect (2021)

Facebook's abandoned project to add first-class support for static typing to erlang. Github repo archived and read-only.

*** Bidirectional typing for Erlang (2021)

Erlang Type Checker Prototype Based on Bidirectional Typechecking.