この投稿に影響を与えました。
ネストされたラムダでフィボナッチ数列を実装しようとしています-
(( (lambda (x) (x x)) ;; evaluate x on x
((lambda (fibo-gen)) ;; fibo-gen get another func as arg
(lambda (N it second first)
(cond ;; here the body of the above func ..
((= N 1) 1)
((= N 1) 1)
((= N it) (+ second first))
(else (fibo-gen (+ it 1) (+ second first) (second)))
)
)
)
)
5 1 1 1)
プロンプトですr5rs:body: no expression in body in: (r5rs:body)
私の調査によると、各関数にはここに「本体」があるので、私が間違ったことは何ですか?
ここで実行しようとしている実装は、前のシリーズの再計算を回避する反復モードであることに注意してください。
編集 :
同様に機能する別のモード-
(( (lambda (x) (x x)) ;; evaluate x on x
(lambda (fibo-gen) ;; fibo-gen body use another lambda ..
(lambda (N it second first)
(cond ;; here the body of the above func ..
((= N 1) 1)
((= N 2) 1)
((= N it) second)
(else ((fibo-gen fibo-gen) N (+ it 1) (+ second first) second))
)
)
)
)
5 1 1 1)
=> 8