Compilation
Most of the time it is convenient to write modules into files so they can be compiled and reused. Let’s assume we have a file named math.ex
with the following contents:
defmodule Math do
def sum(a, b) do
a + b
end
end
This file can be compiled using elixirc
:
$ elixirc math.ex
This will generate a file named Elixir.Math.beam
containing the bytecode for the defined module. If we start iex
again, our module definition will be available (provided that iex
is started in the same directory the bytecode file is in):
iex> Math.sum(1, 2)
3
Elixir projects are usually organized into three directories:
- ebin - contains the compiled bytecode
- lib - contains elixir code (usually
.ex
files) - test - contains tests (usually
.exs
files)
When working on actual projects, the build tool called mix
will be responsible for compiling and setting up the proper paths for you. For learning purposes, Elixir also supports a scripted mode which is more flexible and does not generate any compiled artifacts.