- 作者: 柏原正三
- 出版社/メーカー: アスキー
- 発売日: 2007/11/29
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 72回
- この商品を含むブログ (43件) を見る
-module(fib). -export([fib/1, fib/2, cfib/1]). fib (0) -> 1; fib (1) -> 1; fib (N) -> fib(N - 1) + fib(N - 2). fib (N, P) -> P ! fib(N). cfib (N) -> S = self(), spawn(fib, fib, [N - 1, S]), spawn(fib, fib, [N - 2, S]), nrecv_sum(2). nrecv_fold (I, _, 0) -> I; nrecv_fold (I, F, N) -> receive R -> F(R, nrecv_fold(I, F, N - 1)) end. nrecv_sum(N) -> nrecv_fold(0, fun(A, B) -> A + B end, N).
外から見えなくても良い関数をexportしないといけないのが萎え
あと、シェルでは関数定義とかできないのかな?
fun を使っても良いのかもしれないけれど。