我正在尝试 SICP 第 4 章的示例(编写 LISP 解释器的一部分)
(define (definition-value exp)
(if (symbol? (cadr exp))
(caddr exp)
(make-lambda
(cdadr exp) ; formal parameters
(cddr exp) ; body
)
)
)
(define (make-lambda parameters body)
(cons 'lambda (cons parameters body))
)
我测试过,'(define (double x) (+ xx))) 上的定义值应该返回一个 lambda 函数
( (definition-value '(define (double x) (+ x x))) 10)
球拍输出
procedure application: expected procedure, given: (lambda (x) (+ x x)); arguments were: 10
“(lambda(x)(+ xx))”不是一个过程吗?或者它是一个参考?如果是引用,有什么方法可以“取消引用”它?