Re:Start

いまはディレクターやってます

型と再帰

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を使って効率的に書く事も可能