Erlangにおけるモジュールは関数をまとめておく基本単位と言えます。
オブジェクト指向のJavaにおけるClassは異なる概念で、もっと単純に「関数がモジュールに入っている」 というだけです。
モジュールは拡張子が「 .erl 」のファイルに入れます。
さっそくサンプルを見てみましょう。
モジュール名「 mymath.erl 」
-module(mymath).
-export([add/2, multi/2]).
add(X,Y) ->
X + Y.
multi(X,Y) ->
X * Y.
最初の2行
-module(mymath).
-export([add/2, multi/2]).
はこのモジュールについての宣言をしています。
細かいことは次の節でやりますが、
この場合は
モジュール名は「mymath」である。
外部に公開している関数は「引数が2つのaddと、引数が2つのmulti」である。
ということが示されているわけですね。
宣言は特別な書式ですので関数と見間違うようなことは無さそうです。
宣言の下にある、
add(X,Y) ->
X + Y.
は関数の定義です。
細かいことは関数の節でやりますが、この場合は
addという関数があり、引数は X,Y の2つであり、処理は X+Y でとなります。
モジュールのコンパイルには2つの手法があります。
一つはコンソールのシェルから行うものと、もう一つはErlangシェルの内部から行うものです。
Erlangシェル内にてのコンパイルは関数c()を使います。
引数としてコンパイルしたいモジュールを渡します。
同じディレクトリにある場合はモジュール名のみで大丈夫ですが、
違うディレクトリにある際はパスの入力が必要となります。
Erlangシェルからのコンパイル
1> c(mymath).
{ok,mymath}
コンパイルをすると、「 モジュール名.beam 」という実行ファイルが作成されます。
次に、コンソールのシェルからのコンパイルを行います。
これは、コマンド「 erlc
」の引数にソースファイルを選択することで行います。
コマンドプロンプトからのコンパイル
$ erlc mymath.erl
こちらも先ほどと同じように「 モジュール名.beam 」という実行ファイルが作成されます。