0
私はこの特定のスキームコードが36という値を返す理由を理解しようとしています。Schemeの次のコードは何を返します
(((lambda (fn)
(lambda(x)(fn (fn x))))
(lambda (x) (* x 3)))
4)
誰かがこのコードを包括的に調べることができれば、私の研究に非常に役立ちます。ありがとうございました。
私はこの特定のスキームコードが36という値を返す理由を理解しようとしています。Schemeの次のコードは何を返します
(((lambda (fn)
(lambda(x)(fn (fn x))))
(lambda (x) (* x 3)))
4)
誰かがこのコードを包括的に調べることができれば、私の研究に非常に役立ちます。ありがとうございました。
コードを評価するために置換原則を使用してください。あなたは簡単にどの表現がラムダ
(((lambda (fn) (lambda(x) (fn (fn x)))) (lambda (x) (* x 3))) 4)
まずにプラグインすることができ、我々はfn
((lambda(x) ((lambda (x) (* x 3)) ((lambda (x) (* x 3)) x))) 4)
ため(lambda (x) (* x 3))
で代用します見ることができますので、あなたが行ったようにあなたのコードがきれいにインデント持つことは有用である今、私たちがします最も外側のx
((lambda (x) (* x 3)) ((lambda (x) (* x 3)) 4))
ため4
で代替今、私たちは01で代用します右側ラムダにx
ために
((lambda (x) (* x 3)) (* 4 3))
はx
(* 12 3)
を評価(* 4 3)
((lambda (x) (* x 3)) 12)
代替12
について評価
36