scheme

継続

schemeの継続を勉強してみる。以前に比べればはるかに理解できた気がしたけど、まだよくわからん。 継続はlambdaで表現できるが、どこまで環境を巻き込むのか? call/ccの引数の手続きがcallされるようになってるのはなぜか? call/ccの引数の手続きに渡され…

たらいまわし関数の意味

val it: α → α = funより。 たらいまわし関数(tak関数) tak(x, y, z) の意味。 if x < y then y else if y < z then z else x あーなるほど。 自分用に言い換えてメモ。 直前の引数より小さくない(≒大きい)ときは、その引数。 比較は第二引数から 当然 cyclic

ついでにちょっと感想。

積読中の SICP ですが、読んでたときに思った事をメモ。 ループが無い 代入が無い ということは、変数の値は初期化時のまま。気持ちいい。 データが無い ふと「あれ?データどこだ?」と思ってタマネギみたいにむいていくと無くなってしまった感じ どうもパ…

Church 数のメモ - つづき。

しかし、ここでの特徴は、「普通の数値に戻す」ことではなくて、「関数をそのまま数として扱う」ということにある。これで、数そのものの「作り方」はわかったが、そこから任意の数を作るための「演算」はどうしたらよいのだろう? 例えば、自然数は、次の数…

反復的プロセスからループにしてみた。

フィボナッチ数を計算する関数を、繰り返し(iteration)をつかって定義しなさい。再帰版は次の通り。(define (fib n) (cond ((= n 1) 1) ((= n 2) 1) (else (+ (fib (- n 1))(fib (- n 2))))))分かりませんでした。なので、関数型言語の勉強にSICPを読もう - …

Church 数のメモ

404 Blog Not Found:TuringとChurchの狭間で で少しすっきりしたので、分かったところまでメモ。 0 := λ f x . x 1 := λ f x . f x 2 := λ f x . f f x 自然数 の場合を自分用に噛み砕いて。 自然数 は、2 変数関数である。 関数 の第一引数は、関数である。…