【发布时间】:2013-05-14 09:20:04
【问题描述】:
我正在尝试 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) (+ x x))) 上的定义值应该返回一个 lambda 函数
( (definition-value '(define (double x) (+ x x))) 10)
球拍输出
procedure application: expected procedure, given: (lambda (x) (+ x x)); arguments were: 10
“(lambda (x) (+ x x))”不是一个过程吗?或者它是一个参考?如果是引用,有什么方法可以“取消引用”它?
【问题讨论】:
标签: functional-programming lisp scheme racket