Skip to content
This repository has been archived by the owner before Nov 9, 2022. It is now read-only.
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time


elm-beam compiles Elm to assembly that runs on the Erlang Virtual Machine. I wrote an essay touching on the interesting parts of this project, which you can find on my blog. Here are some clarifications I offer in that post:

  • elm-beam is a personal exploration
  • elm-beam is incomplete (in every sense)
  • elm-beam is NOT endoresed by the Elm core team
  • elm-beam is NOT "Elm on the server"

Setup guide

Use stack to build the elm-beam executable.

# make sure you have the `elm-compiler` submodule
git submodule init
git submodule update

# build the executable
stack build

# compile the test .elm file to produce elm.beam
stack exec elm-beam debug/Main.elm

# load the BEAM module into the Erlang console and start the gen_server
1> l(elm).
2> gen_server:start({local, elm}, elm, [], []).
3> gen_server:call(elm, {}).


To those interested in continuing the exploration: join us in the #elm-beam channel on the Elm Slack.