プログラミングの練習で私を助けてくれるかどうか尋ねたいです。この形式のラムダ式を作成しようとしています:
λz.x(yz)
私がこれを理解する方法は、それy
が value に適用される関数であるということですz
。次にx
、 に関数を適用すると出てくるものに関数y
を適用しz
ます。式全体は次のようになります。
λz.x(yz) means: Do the following with the argument z:
y
に関数を適用しますz
。x
最初の手順から得られるものに関数を適用します。
上記のすべてをSchemeに実行させるために、このプログラムを作成しました。
(define (zlamb)
(lambda (z)
(lambda (x)
(* (lambda (y) (* z 4)) 2))))
私がそれを実行すると、私が得るのはこれだけです:
Welcome to DrRacket, version 5.3 [3m].
Language: R5RS; memory limit: 128 MB.
( (zlamb) 3)
procedure:...lambdaefing1.rkt:3:4
>
誰かが私が間違っていることを説明してもらえますか? 私が手に入れたかったのは(3 * 4) * 2 = 24
. y = z * 4
だから私は内部関数と外部関数を作った(または作ったと思った)x = y(z) * 2
。
説明を求めてインターネット全体を検索しましたが、干し草の山で探している特定の針を見つけることができません.