我正在研究方案中的方案评估器。我需要实现 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)) 评估为变量名列表(例如:'(xy)),所以我基本上是在评估这个:
((lambda '(x y) (* x y)) '(2 3))
方案解释器简单地说: #%plain-lambda: not an identifier in: (let-bindings exp) 我猜是因为它需要一组标识符,而不是值列表。
如何将我的值列表转换为一组标识符?