所以我有一点挑战。
我正在尝试在此处进行编程:
lambda演算简化为12。
我有以下Scheme脚本:
(
define double (
lambda x (
+ (car x) (car x)
)
)
)
(display 'Debug)
(newline)
(display (double 6))
(newline)
(
define getTwelve (
((
(lambda x (
lambda y (
(display y)
(newline)
(x (x y))
)
))
double
) 3)
)
)
(display getTwelve)
(newline)
(newline)
对应于此终端输出:
Debug
12
(3)
application: not a procedure;
expected a procedure that can be applied to arguments
given: '(#<procedure:double>)
arguments...:
'(3)
所以我当然认为“这是因为double的参数是列表而不是数字”,但是car y
只是将终端输出的最后一行更改为3
。
我认为我对Racket
终端输出的解释是错误的,但是我不知道用哪种方式。但是,另一种可能性是不允许将lambda
函数作为参数传递给lambda
函数。
所以我的问题是:是哪一个?