Memo
Y-combinator の最大の実利は、letrec を実装していなくてもフィボナッチ数列が計算できることだ。たぶん。
VSECD> (run '(((lambda (f) ((lambda (g) (f (lambda (arg) ((g g) arg)))) (lambda (g) (f (lambda (arg) ((g g) arg)))))) (lambda (f) (lambda (n) (if (< n 1) 1 (+ (f (- n 1)) (f (- n 2))))))) 27)) #<VM S: (514229 . S) E: E C: #(NIL LDC 27 CONS NIL LDF 8 52 LDF 11 51 LDC 1 LD 1 1 < SEL 21 24 50 LDC 1 JOIN NIL LDC 2 LD 1 1 - CONS LD 2 1 AP NIL LDC 1 LD 1 1 - CONS LD 2 1 AP + JOIN RTN RTN CONS LDF 56 118 NIL LDF 60 86 NIL LDF 64 80 NIL LD 1 1 CONS NIL LD 2 1 CONS LD 2 1 AP AP RTN CONS LD 2 1 AP RTN CONS LDF 90 116 NIL LDF 94 110 NIL LD 1 1 CONS NIL LD 2 1 CONS LD 2 1 AP AP RTN CONS LD 2 1 AP RTN AP RTN AP AP STOP) D:D> VSECD> VSECD> (describe *) #<VM S: (514229 . S) E: E C: #(NIL LDC 27 CONS NIL LDF 8 52 LDF 11 51.. [standard-object] Slots with :INSTANCE allocation: STACK = (514229 . S) ENV = E PC = 121 CODE = #(:NIL :LDC 27 :CONS :NIL :LDF 8 52 :LDF 11 51 :LDC 1 :LD 1 1 :< :SEL.. DUMP = D PROFILE = #<HASH-TABLE :TEST EQL :COUNT 13 {1003B42771}> スタックトップは514229コードの長さは 121、PC は 121 PC はコードの範囲外 プロファイル: NIL: 4113828 LDC: 2571143 CONS: 4113828 LDF: 2056918 AP: 4113828 LD: 7199194 RTN: 4113828 <: 1028457 SEL: 1028457 -: 1028456 JOIN: 1028457 +: 514228 STOP: 1 ; No value