我希望你能帮我完成一个编程练习。我正在尝试创建一个这样的lambda表达式:
λz.x(yz)
我理解的是,
y
是一个函数,被应用于值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
。我在互联网上搜寻了很久,但是找不到我需要的解释。