こんな感じ.
-module(foo). -export([fac/1, fib/1]). fac(0) -> 1; fac(X) -> X * fac(X - 1). fib(1) -> 1; fib(2) -> 1; fib(X) -> fib(X-1) + fib(X-2).
erlangもハイライトしてくれるんだなあ.
-module(XXX).
でモジュール名を宣言.
-export([func/arity])
で外部に公開する関数名と引数の数をリストで指定する.
関数定義自体は
func(arg, ...) -> body1; ... func(arg, ...) -> bodyn.
と ->を使って定義する.パターンマッチが複数あるときは;(セミコロン)を用いる.関数定義の最後は.(ピリオド).
Haskellでは=で関数定義しているけども,Erlangでは=は代入に使うことができる.一度だけだけれども.あと,fac(x) -> ...とかはだめで,変数名は大文字かアンダースコア(_)で始まらなければならない.小文字で始まるとatomになってしまうので.この辺はprologっぽい.
erlから使うときはc(filename)でコンパイルする.
1> c(foo). {ok,foo}
で,module:funcで関数を指定する.
2> foo:fac(5). 120 3> foo:fib(10). 55 4>