【发布时间】:2014-05-10 04:14:18
【问题描述】:
我正在制定一个方案评估器。我需要实现 let,我已经解析了变量名、要输入的值和函数体。我需要使用解析的信息返回一个 lambda 函数,因此我有以下代码:
(define (eval-let exp env)
((lambda (let-variables (let-bindings exp)) (let-body exp)) (let-exp (let-bindings exp))))
(let-variables (let-bindings exp)) 评估为变量名列表(例如:'(x y)),所以我基本上是在评估这个:
((lambda '(x y) (* x y)) '(2 3))
方案解释器简单地说:#%plain-lambda: not an identifier in: (let-bindings exp) 我猜是因为它需要一组标识符,而不是值列表。
如何将值列表转换为一组标识符?
【问题讨论】:
标签: scheme racket lambda let evaluator