人気ブログランキング | 話題のタグを見る

代入

Scheme で局所変数に代入を行うときは let を使う。let の書式は次のようになる。

(let binds body)

例えば、局所変数 i と j に値を代入し、i + j を出力させるプログラムは、

(let ((i 1) (j 2)) (+ i j))

となる。書式が複雑で少し見づらいが、let を使った上の式は lambda を使った次の式と同値だ。

((lambda (i j) (+ i j)) 1 2)

数学式に書くと、f(1,2)。つまり局所変数の正体は引数なのだ。関数型言語はあくまでも関数でプログラムするらしい。lambda メソッドは Ruby にもあるので上の式は Ruby でもプログラムできる。

(lambda {|i, j| i + j}).call(1,2)

プログラムを純粋に関数だけで組み立てると、代入に伴う副作用がなくバグが発生しにくいそうだ。もう一つの利点は処理系がひどく単純になることではないだろうか。理論や機械にやさしい分、プログラムするほうにはやや負担がかかる。
by tnomura9 | 2008-02-05 07:16 | Ruby | Comments(0)
<< ループ 末尾再帰 >>