在Scheme中将Lambda函数传递给Lambda函数

时间:2018-09-14 19:05:37

标签: scheme lambda-calculus

所以我有一点挑战。

我正在尝试在此处进行编程:

enter image description here

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函数。

所以我的问题是:是哪一个?

0 个答案:

没有答案