我想问你是否可以帮助我进行编程练习。我正在尝试制作这种形式的 lambda 表达式:
λ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
。
我在互联网上搜索了所有解释,但在大海捞针中找不到我正在寻找的特定针。