型と再帰
6.型
http://www.ymotongpoo.com/works/lyse-ja/ja/06_types.html
Erlangも動的型付け言語だよ
たいていの言語や型システムはプログラムからエラーを取り除くことを狙いとしていますが、Erlangはエラーはどうせ起きるんだから、エラーから確実に回復するようにしよう、という戦略に立っている
型変換のフォーマット
%型の数だけこの形があるということ
_to_
型はたいがい見た目で判断でける
- タプルは波括弧
- リストはカギ括弧
- 文字列はダブルクォーテーションで囲まれています
7.再帰
http://www.ymotongpoo.com/works/lyse-ja/ja/07_recursion.html
- ループ重要
- 再帰は自分自身の呼び出し、末尾再帰も可能、ただしデフォルトで変数が指定できないので細工が必要
-module(recursion). -compile(export_all). % 再帰が楽々! %fac(N) when N == 0 -> % 1; % 停止条件として定義する (しない場合は無限ループ) fac(0) -> 1; fac(N) when N > 0 -> N*fac(N-1).
末尾再帰
% 後ろから計算する方法(末尾再帰) % アキュムレータを使う %tail_fac(N) -> tail_fac(N,1). %tail_fac(0,Acc) -> Acc; %tail_fac(N,Acc) when N > 0 -> % tail_fac(N-1, N*Acc).
- 実際の処理は末尾再帰も再帰も似たようなスピードで処理される
- whileを使って効率的に書く事も可能