More Related Content
Similar to (define)なしで再帰関数を定義する
Similar to (define)なしで再帰関数を定義する (20)
(define)なしで再帰関数を定義する
- 9. (define var value)
≒ (let ((var value)) …)
≒ ((lambda (var) …) value)
ところ
で
一番下のやつはJavaScriptでは良く使いますね
- 24. つまり
(f (f (f … )))
無限回適用
あ、fは
「1引数を取って1引数関数を返す関
数」
ってのを覚えておいて下さい
- 28. (lambda (f)
((lambda (x) (f (x x))) (lambda (x) (f (x x)))))
”うまいこと無限ループの エンジン”
に関数適用を乗せてみる
(f (f (f … (f (x x))...)))
- 34. ((lambda (f)
((lambda (x) (f (lambda (n) ((x x) n))))
(lambda (x) (f (lambda (n) ((x x) n))))))
(lambda (fact)
(lambda (n)
(if (= 0 n)
1
(* n (fact (- n 1)))))))
全体図
- 35. (((lambda (f)
((lambda (x) (f (lambda (n) ((x x) n))))
(lambda (x) (f (lambda (n) ((x x) n))))))
(lambda (fact)
(lambda (n)
(if (= 0 n)
1
(* n (fact (- n 1))))))) 10)
* * * * * * * => 3628800
遊んでみる
(picrinで実行)