関数型言語を触ってみる(その4)
プログラミング言語Erlang入門を読み進める。”Hello World!"すら、まだ正式に書けるようにならない。
たぶん、io:format("Hello World!~n").でよい。
- 4章 関数を作ってみよう
- BEAMとは、Erlangプログラムを実行するための仮想マシンです(ほー)
- モジュールの属性、-module(), -export()
- モジュールは属性と関数宣言で構成される
- 1つの関数の宣言全体のことを関数のクローズ(節)と呼ぶ(ここらへんは定義だから憶える)
- 複数の関数やプロセスでメモリを共有しないというのが基本ポリシーであるから、グローバル変数というものはない(こういうルールを決めておけば並列処理し易そー)
- クローズはセミコロンで区切る(2つ以上のクローズをひとつの関数内で宣言するとき)
- これらのクローズのうちどれが呼び出されるかは、引数として受け取るタプルの第1要素のアトムで決まります(うーん)
- 関数名、アリティ、モジュール名の3つの要素で個々の関数を区別している(うーん、うーん)
- ガードと呼ばれる構造を持ったもう少し複雑な関数を見ていく(ガード?)
- %記号から行末までがコメントになる
- 同じ形式のクローズヘッドを複数記述した場合、どちらか一方がパターンマッチにより択一的に適用される(?)
- X rem 2 (2で割ったときの余り)
- アンダースコアは無名変数。任意の値にマッチする(ただし値を利用することはできない)
- 動的型付け。関数の呼出時には引数とパターンの間でパターンマッチが行われますが、マッチに成功した場合、パターン中の未束縛変数は任意の型の引数に束縛される。(難しい...、そろそろ寝るか)
- クローズヘッドにはガードを記述できる