{"id":13567342,"url":"https://github.com/llaisdy/beam_languages","last_synced_at":"2026-02-19T19:30:31.032Z","repository":{"id":1998227,"uuid":"45502793","full_name":"llaisdy/beam_languages","owner":"llaisdy","description":"Languages, and about languages, on the BEAM","archived":false,"fork":false,"pushed_at":"2022-06-04T10:45:16.000Z","size":76,"stargazers_count":740,"open_issues_count":1,"forks_count":43,"subscribers_count":42,"default_branch":"master","last_synced_at":"2024-11-04T22:36:51.361Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/llaisdy.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-11-03T23:33:33.000Z","updated_at":"2024-10-18T02:30:23.000Z","dependencies_parsed_at":"2022-08-02T10:35:06.908Z","dependency_job_id":null,"html_url":"https://github.com/llaisdy/beam_languages","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llaisdy%2Fbeam_languages","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llaisdy%2Fbeam_languages/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llaisdy%2Fbeam_languages/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llaisdy%2Fbeam_languages/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/llaisdy","download_url":"https://codeload.github.com/llaisdy/beam_languages/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247107816,"owners_count":20884793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T13:02:28.931Z","updated_at":"2026-02-19T19:30:30.989Z","avatar_url":"https://github.com/llaisdy.png","language":null,"funding_links":[],"categories":["Others","Misc"],"sub_categories":[],"readme":"* Languages, and about languages, on the BEAM\n\n** Contents                                                             :TOC:\n- [[#languages-and-about-languages-on-the-beam][Languages, and about languages, on the BEAM]]\n  - [[#overview][Overview]]\n  - [[#34-languages-on-the-beam][34 Languages on the BEAM]]\n  - [[#about-languages][About Languages]]\n  - [[#about-the-beam][About the BEAM]]\n  - [[#erlang-and-types][Erlang and Types]]\n\n** Overview\n\nThis document is intended to list (a) languages implemented to run on the BEAM, the Erlang virtual machine, and (b) documents (articles \u0026 presentations) about the hows and whys of writing languages to run on the BEAM.\n\nFor 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, ...).\n\nI 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.).  \n\nThank you.\n\n** 34 Languages on the BEAM\n\nFirst Erlang itself,\n then the  5 [[#lisps][Lisp-influenced]] languages,\n then the 15 [[#statically-typed-languages][statically-typed]] languages,\n then the 13 [[#etc][others]].  Including Erlang,\n that's   34 languages in all.\n\n*** erlang itself\n\n- http://www.erlang.org/\n- https://github.com/erlang/otp\n\n*** lisps\n**** clojerl (2015+)\n\nclojerl - Clojure for the Erlang VM\n\n- http://clojerl.org/\n- http://try.clojerl.online/\n- https://github.com/clojerl/clojerl\n\n**** joxa (2011+)\n\n- http://joxa.org/\n- https://github.com/joxa/joxa\n- https://joxa.readthedocs.org/\n\n***** Differences Between Joxa and LFE\n\n- Eric Merritt\n- 2012/02/21\n- http://blog.ericbmerritt.com/2012/02/21/differences-between-joxa-and-lfe.html\n\n***** Joxa: A Full Featured Lisp on the Erlang VM\n\n- Eric Merritt\n- 2012/08/22\n- https://vimeo.com/49116180\n\n**** kapok (2015-2018)\n\n- https://github.com/kapok-lang/kapok\n\n**** lfe (2008+)\n\n- http://lfe.io/\n- https://github.com/rvirding/lfe\n\n**** 'the concurrent schemer' (2013-2014)\n\n- http://the-concurrent-schemer.github.io/scm-doc/\n- https://github.com/the-concurrent-schemer/scm\n\n*** statically-typed languages\n**** alpaca (2016+)\n\n- https://github.com/alpaca-lang/alpaca\n\n**** caramel (2020?+)\n\nAn Erlang backend to the OCaml compiler\n\n- https://caramel.run/\n- https://github.com/AbstractMachinesLab/caramel\n\n**** cuneiform (2013+)\n\n- https://cuneiform-lang.org\n- https://github.com/joergen7/cuneiform\n- https://en.wikipedia.org/wiki/Cuneiform_(programming_language)\n\n**** elchemy (2017+)\n\nAn Elm syntax front-end for Elixir (i.e., converts Elm-style input language into Elixir source code).\n\n- https://wende.github.io/elchemy/\n- https://github.com/wende/elchemy\n\n**** eml (2012)\n\n\"eml - Erlang flavored by Some ML\"\n\n- https://github.com/etnt/eml\n\n**** fez (2017+)\n\nfez - fsharp to core erlang compiler experiment\n\n- https://github.com/kjnilsson/fez\n\n**** fika (2020)\n\nA statically typed functional programming language for the web\n\n- https://github.com/fika-lang/fika\n\n**** gleam (2016+)\n\ngleam - \"A statically typed language for the Erlang VM\"\n\n- https://gleam.run\n- https://github.com/gleam-lang/gleam\n\n**** hamler (2020)\n\nHaskell-style functional programming language running on Erlang VM.\n\n- https://github.com/hamler-lang/hamler\n- https://hamler-lang.org/\n\n**** haskerl et al. (1993-2014)\n\n- https://github.com/etnt/Haskerl\n\n- The Haskerl Index ::\n  http://www.dcs.gla.ac.uk/~partain/haskerl.html\n\n- Yhc/Erlang/Proof of concept ::\n  https://wiki.haskell.org/Yhc/Erlang/Proof_of_concept\n\n**** idris-erlang (2014-17)\n\n- https://github.com/lenary/idris-erlang\n\nThis is an Idris package (therefore requiring Haskell and Idris) which compiles Idris source code into erlang source code.\n\n**** idris2-erlang (2020+)\n\nAn Erlang code generator for Idris 2 (eg compiles Idris 2 programs to Erlang source code or to BEAM).\n\n- https://github.com/chrrasmussen/Idris2-Erlang\n\n**** purerl (2016+)\n\nErlang backend for PureScript\n\n- https://github.com/purerl/purerl\n- https://purerl.fun/\n\n- Introducing PureScript Erlang ::\n  http://nwolverson.uk/devlog/2016/08/01/introducing-purescript-erlang.html\n\n**** rufus (2018+)\n\n\"A general-purpose programming language for the BEAM\"\n\n- https://github.com/rufus-lang/rufus\n\nThere's website source, but no website.  Some docs, eg here:\n\n- https://github.com/rufus-lang/rufus/blob/main/rufus-lang.org/public/doc/spec.md\n\nLooks like it's implemented in erlang too!\n\n**** sesterl (2020+)\n\nA \"Session-Typed Erlang\", an ML-inspired statically-typed Erlang\n\n- https://github.com/gfngfn/Sesterl\n\n- [[https://github.com/gfngfn/the_sesterl_book][The Sesterl Book]]\n- [[https://blog.michallepicki.com/notes-on-using-sesterl.html][Notes on using Sesterl]]\n- [[https://github.com/gfngfn/game_tianjiupai][Sample game reference based on Elm and Sesterl]]\n\n*** etc\n**** efene (2009+)\n\n- http://efene.org/\n- https://github.com/efene/efene\n\n**** elixir (2011+)\n\n- http://elixir-lang.org/\n- https://github.com/elixir-lang/elixir\n\n**** ephp (2013+)\n\nAn erlang interpreter for PHP\n\n- https://github.com/bragful/ephp\n\nPresumably as used by [[https://bragful.com][Bragful]] --- \"A resilient and scalable PHP\".\n\n**** erl2 (2012)\n\n- https://github.com/joearms/erl2\n\n- Announcement and ensuing discussion on erlang-questions ::\n  http://erlang.org/pipermail/erlang-questions/2012-February/064687.html\n\n- \"A Few Improvements to Erlang\" (EUC 2012) ::\n  http://www.erlang-factory.com/conference/ErlangUserConference2012/speakers/joearmstrong\n\n- A blog post about the above presentation in Chinese ::\n  http://www.cnblogs.com/me-sa/archive/2012/06/06/2538941.html\n\n**** erlog (2008-2018)\n\n- https://github.com/rvirding/erlog\n\n***** Backtracking in Erlang, part 1 - control\n\n- Robert Virding\n- 2009/03/18\n- http://rvirding.blogspot.co.uk/2009/03/backtracking-in-erlang-part-1-control.html\n\n**** erlyjs (2008-2013)\n\nThe original repo (on Google Code) no longer exists, but there are several forks, e.g.:\n\n- https://github.com/KlausTrainer/erlyjs\n\nA couple of blog posts from 2008 (the second is by the original developer of erlyjs):\n\n- ErlyJS: JavaScript on Erlang ::\n  http://ajaxian.com/archives/erlyjs-javascript-on-erlang\n\n- ErlyJS - translating Javascript to Erlang ::\n  http://rsaccon.blogspot.co.uk/2008/02/erlyjs-translating-javascript-to-erlang.html\n\n**** ffe: Forth-flavoured Erlang (2014-2016)\n\n- https://github.com/tonyrog/ffe\n\n**** interfix (2015)\n\n- https://github.com/marianoguerra/interfix\n\n**** luerl (2012+)\n\n- https://github.com/rvirding/luerl\n\n**** OTPCL (2017+)\n\nOpen Telecom Platform Command Language: \"a scripting language designed to integrate with and extend applications written in BEAM-based languages\"\n\n- https://otpcl.github.io/\n- https://github.com/otpcl/otpcl\n\n**** reia (-2012)\n\n- http://reia-lang.org/\n- https://github.com/tarcieri/reia\n\n**** template_compiler (2016-)\n\nThis compiler is a complete rewrite of the Erlang Django (ErlyDTL) template language fork used in Zotonic. In contrast with ErlyDTL\nthe template_compiler generates small Erlang modules which are shared between different templates and sites.\n\n- https://github.com/zotonic/template_compiler\n- https://test.zotonic.com/page/1352/templates\n\n**** xerl (2013)\n\n- https://github.com/extend/xerl\n\nFive web articles in 2013 starting with:\n\n- Xerl: empty modules (2013/01/30) ::\n  http://ninenines.eu/articles/xerl-0.1-empty-modules/\n\n** About Languages\n\n*** Implementing languages on the BEAM (4)\n\n(video)\n- Robert Virding \u0026 Mariano Guerra\n- 2018/05/17 (Erlang Solutions Webinar)\n- https://www.youtube.com/watch?v=0MTiqI9v-ck\n\n*** Implementing languages on the BEAM (3)\n\n(video)\n- Robert Virding \u0026 Mariano Guerra\n- 2018/03/06 (CodeBEAM SF)\n- https://www.youtube.com/watch?v=lkAbwmn5Rv8\n\n*** Efene and the BEAM Community\n\n(slides \u0026 video)\n- Mariano Guerra\n- 2017/06/06 (EUC)\n- http://www.erlang-factory.com/euc2017/mariano-guerra\n\n*** How BEAMs are made\n\nSlides with link to github repo\n\n- Mariano Guerra\n- 2016/10 (BEAM BA Meetup)\n- http://marianoguerra.org/talks/beamba-buenos-aires-meetup/#/how-beams-are-made\n\n*** Eric Merritt, Erlang and distributed systems expert, gives his views on BEAM languages, Hindley–Milner type systems and new technologies\n\n(article/interview, with links to podcast \u0026 video)\n\n- Federico Carrone\n- 2015/08/11\n- https://medium.com/this-is-not-a-monad-tutorial/eric-merritt-erlang-and-distributed-systems-expert-gives-his-views-on-beam-languages-hindley-a09b15f53a2f\n\n*** Create Your Own Language: How to implement a language on top of Erlang Virtual Machine (BEAM)\n\n(slides)\n- Hamidreza Soleimani\n- 2015/08/06\n- https://www.slideshare.net/hamidreza-s/create-your-own-language\n\n*** Implementing Languages on the BEAM (2)\n\n(slides \u0026 video)\n- Robert Virding\n- 2014/11/04 (Codemesh 2014)\n- http://www.codemesh.io/codemesh2014/robert-virding\n\n*** Implementing Languages on the BEAM (1)\n\n(video)\n- Robert Virding\n- 2014/10/29 (London Erlang UG)\n- https://www.youtube.com/watch?v=qm0mbQbc9Kc\n\n*** Erlang, LFE, Joxa and Elixir: Established and Emerging Languages in the Erlang Ecosystem\n\n(slides)\n- Brian Troutwine\n- 2014/07/23\n- http://www.slideshare.net/BrianTroutwine1/erlang-lfe-elixir-and-joxa-oscon-2014\n\n** About the BEAM\n\n*** The BEAM Book\n\nA description of the Erlang Runtime System ERTS and the virtual Machine BEAM\nhttps://github.com/happi/theBeamBook\n\n*** The BEAM Toolbox\n\nA list of tools and libraries that are useful for BEAM languages like efene, erlang, LFE and Elixir projects.\nhttp://efene.org/toolbox.html\n\n** Erlang and Types\n\nThese first two papers are linked from Philip Wadler's erlang page: http://homepages.inf.ed.ac.uk/wadler/topics/erlang.html\n\n*** A practical subtyping system for Erlang (1997)\n\n(paper)\n- Simon Marlow \u0026 Philip Wadler \n- 1997\n- http://homepages.inf.ed.ac.uk/wadler/papers/erlang/erlang.pdf\n\n*** The great type hope (2002)\n\n(slides)\n- Philip Wadler\n- 2002\n- http://homepages.inf.ed.ac.uk/wadler/papers/erlang/erlang-slides.pdf\n\n*** Pure Type System for Erlang (2014+)\n\n- Namdak Tonpa\n- 2013\n- Paper: http://aip.scitation.org/doi/pdf/10.1063/1.5045439\n- Code: https://github.com/groupoid/pure\n\n*** Gradualizer: A Gradual Type System for Erlang (2018+)\n\nA gradual typing system and static code analysis tool for Erlang.\n\n- https://github.com/josefs/Gradualizer\n\nThe type system is based on \"Gradual Typing for Functional Languages\" (Siek \u0026 Taha, 2006) (see doc/GTLC.hs):\n\n- http://scheme2006.cs.uchicago.edu/13-siek.pdf.\n\n*** ErlT - experimental erlang dialect (2021)\n\nFacebook's abandoned project to add first-class support for static typing to erlang.  Github repo archived and read-only.\n\n- https://github.com/WhatsApp/erlt\n\n*** Bidirectional typing for Erlang (2021)\n\nErlang Type Checker Prototype Based on Bidirectional Typechecking.\n\n- Nithin Vadukkumchery Rajendrakumar, Annette Bieniusa\n- Paper: https://dl.acm.org/doi/10.1145/3471871.3472966\n- Video: https://youtube.com/watch?v=MAerjPQUKQQ\n- Code: https://github.com/vrnithinkumar/ETC\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllaisdy%2Fbeam_languages","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fllaisdy%2Fbeam_languages","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllaisdy%2Fbeam_languages/lists"}