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.
First Erlang itself, then the 6 main Lisp-influenced languages, then the 22 statically-typed languages, then the 25 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 Michał Łępicki’s beam languages list.
clojerl - Clojure for the Erlang VM
” An implementation of the Scheme programming language for the Erlang/OTP VM.”
- Eric Merritt
- 2012/02/21
- http://blog.ericbmerritt.com/2012/02/21/differences-between-joxa-and-lfe.html
- Eric Merritt
- 2012/08/22
- https://vimeo.com/49116180
“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.”
An Erlang backend to the OCaml compiler
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.
- https://cuneiform-lang.org
- https://github.com/joergen7/cuneiform
- https://en.wikipedia.org/wiki/Cuneiform_(programming_language)
An Elm syntax front-end for Elixir (i.e., converts Elm-style input language into Elixir source code).
“Exploring Elm on the Erlang VM”
See also blog post elm-beam.
“eml - Erlang flavored by Some ML”
“erlml - an ML implementation for the Erlang/OTP VM”
Erty is Erlang but with stronger support for types (ERlang with TYpes).
fez - fsharp to core erlang compiler experiment
A statically typed functional programming language for the web
gleam - “A statically typed language for the Erlang VM”
Haskell-style functional programming language running on Erlang VM.
- The Haskerl Index
- http://www.dcs.gla.ac.uk/~partain/haskerl.html
- Yhc/Erlang/Proof of concept
- https://wiki.haskell.org/Yhc/Erlang/Proof_of_concept
This is an Idris package (therefore requiring Haskell and Idris) which compiles Idris source code into erlang source code.
An Erlang code generator for Idris 2 (eg compiles Idris 2 programs to Erlang source code or to BEAM).
“… designed to be simple to use, easy to read and provide powerful static guarantees.”
Erlang backend for PureScript
- Introducing PureScript Erlang
- http://nwolverson.uk/devlog/2016/08/01/introducing-purescript-erlang.html
“PureScript to Erlang optimizing compiler”
“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!
A “Session-Typed Erlang”, an ML-inspired statically-typed Erlang
- https://github.com/gfngfn/Sesterl
- The Sesterl Book
- Notes on using Sesterl
- Sample game reference based on Elm and Sesterl
Erlang port of the Shen programming language.
” A functional programming language with lisp syntax and ML semantics that runs on the BEAM.”
“Simple Programming Language that compiles to BEAM bytecode”
“Essentially InfluxData’s TICKscript for Erlang”
An erlang interpreter for PHP
Presumably as used by Bragful — “A resilient and scalable PHP”.
” er ~ emergency room (a BEAM language “improving” on Erlang)”
- Announcement and ensuing discussion on erlang-questions
- http://erlang.org/pipermail/erlang-questions/2012-February/064687.html
- “A Few Improvements to Erlang” (EUC 2012)
- http://www.erlang-factory.com/conference/ErlangUserConference2012/speakers/joearmstrong
- A blog post about the above presentation in Chinese
- http://www.cnblogs.com/me-sa/archive/2012/06/06/2538941.html
- Robert Virding
- 2009/03/18
- http://rvirding.blogspot.co.uk/2009/03/backtracking-in-erlang-part-1-control.html
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):
- ErlyJS: JavaScript on Erlang
- http://ajaxian.com/archives/erlyjs-javascript-on-erlang
- ErlyJS - translating Javascript to Erlang
- http://rsaccon.blogspot.co.uk/2008/02/erlyjs-translating-javascript-to-erlang.html
Exprolog is a logic programming language(DSL) like Prolog built on top of Elixir.
“gdminus is an implementation of GDScript for Erlang, allowing Erlang applications to share code with Godot.”
” A (terrible) BEAM programming language”
“a toy concatenative language running on the BEAM”
“krarup is an Erlang dialect for composing concurrent data processing flows.”
“… of a C/C++/Java-friendly language to do easier the adoption of the BEAM.”
Open Telecom Platform Command Language: “a scripting language designed to integrate with and extend applications written in BEAM-based languages”
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.
“A duck-typed, dynamic oop language with a fully redundant actor-model, running on top of the BEAM architecture.”
“Alternative syntax for Erlang”
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.
Five web articles in 2013 starting with:
- Xerl: empty modules (2013/01/30)
- http://ninenines.eu/articles/xerl-0.1-empty-modules/
- Michał Łępicki’s beam languages (current)
(video)
- Robert Virding & Mariano Guerra
- 2018/05/17 (Erlang Solutions Webinar)
- https://www.youtube.com/watch?v=0MTiqI9v-ck
(video)
- Robert Virding & Mariano Guerra
- 2018/03/06 (CodeBEAM SF)
- https://www.youtube.com/watch?v=lkAbwmn5Rv8
(slides & video)
- Mariano Guerra
- 2017/06/06 (EUC)
- http://www.erlang-factory.com/euc2017/mariano-guerra
Slides with link to github repo
- Mariano Guerra
- 2016/10 (BEAM BA Meetup)
- http://marianoguerra.org/talks/beamba-buenos-aires-meetup/#/how-beams-are-made
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)
- Federico Carrone
- 2015/08/11
- https://medium.com/this-is-not-a-monad-tutorial/eric-merritt-erlang-and-distributed-systems-expert-gives-his-views-on-beam-languages-hindley-a09b15f53a2f
(slides)
- Hamidreza Soleimani
- 2015/08/06
- https://www.slideshare.net/hamidreza-s/create-your-own-language
(slides & video)
- Robert Virding
- 2014/11/04 (Codemesh 2014)
- http://www.codemesh.io/codemesh2014/robert-virding
(video)
- Robert Virding
- 2014/10/29 (London Erlang UG)
- https://www.youtube.com/watch?v=qm0mbQbc9Kc
(slides)
- Brian Troutwine
- 2014/07/23
- http://www.slideshare.net/BrianTroutwine1/erlang-lfe-elixir-and-joxa-oscon-2014
A description of the Erlang Runtime System ERTS and the virtual Machine BEAM https://github.com/happi/theBeamBook
A list of tools and libraries that are useful for BEAM languages like efene, erlang, LFE and Elixir projects. http://efene.org/toolbox.html
These first two papers are linked from Philip Wadler’s erlang page: http://homepages.inf.ed.ac.uk/wadler/topics/erlang.html
(paper)
- Simon Marlow & Philip Wadler
- 1997
- http://homepages.inf.ed.ac.uk/wadler/papers/erlang/erlang.pdf
(slides)
- Philip Wadler
- 2002
- http://homepages.inf.ed.ac.uk/wadler/papers/erlang/erlang-slides.pdf
- Namdak Tonpa
- 2013
- Paper: http://aip.scitation.org/doi/pdf/10.1063/1.5045439
- Code: https://github.com/groupoid/pure
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):
Facebook’s abandoned project to add first-class support for static typing to erlang. Github repo archived and read-only.
Erlang Type Checker Prototype Based on Bidirectional Typechecking.
- Nithin Vadukkumchery Rajendrakumar, Annette Bieniusa
- Paper: https://dl.acm.org/doi/10.1145/3471871.3472966
- Video: https://youtube.com/watch?v=MAerjPQUKQQ
- Code: https://github.com/vrnithinkumar/ETC