2020-05-25から1日間の記事一覧
普通の関数が実装できたので、今度は再帰関数を定義できるようにする。 具体的にはこのような構文: (letrec [factorial [n] (if (= 1 n) 1 (* n (factorial (- n 1))))] (factorial 6)) あるいは: (letrec [(odd? [x] (if (= 0 x) false (even? (- x 1))))…
前回実装したダイナミック・スコープの関数は、実装は楽だが使うにはけっこうピーキーである。より一般的なレキシカル・スコープに直すとする。 関数の定義を評価して「関数の値」を作成する時に、関数内に出てくる自由変数を検出して、定義時の変数環境でそ…