Elixirの実体はerlコマンドを各種引数付きで実行させる シェルスクリプトという事は(xxx)で説明しました。
ここではerl上で、Erlangソースファイルがどう実行されるのかを解説していきます。 erl上でErlangのソースコードは、以下の流れで実行されます。
% 変数代入
Var = var.
% 関数定義
MyFunc = fun(X,Y) -> X + Y end.
% 関数実行
MyFunc(1,2).
% TODO:その他サンプルを記述、一通りのパターンを網羅する事
TODO: 説明を追加する
Elixirのコンパイルでは、以下の様にソースファイルが実行されます。
- ElixirのソースファイルをElixirのASTに変換
- ElixirのASTをErlangのASTに変換
- ErlangのASTをerl_evalして実行/beamファイルを作成
上記の様にElixirのコンパイラで作成されるbeamファイルは、 Erlangのコンパイラが作成するbeamファイルと同等のものです。 (何故ならASTレベルでElixirからErlangに変換されるから)
つまり、ElixirとErlangでは、実行のオーバーヘッドが無いという事です。