Scheme - Eval一个绑定变量的表达式(或字符串)?

时间:2016-02-19 03:32:07

标签: scheme

如何使用变量绑定进行eval?

即,给定'(+ 1 x)或字符串"(+ 1 x)",我希望能够将x绑定到任意val并执行eval。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您可以定义自己的计算简单表达式的函数,

在简单表达式上应该像这样

(my-eval '1 '()) ;=> 1
(my-eval 'x '((w . 6) (x . 3) (y . 7))) ;=> 3

并给出一个列表,它可以用MAP评估每个部分,然后它将APPLYCARCDR

为了帮助您入门,这里有一个骨架

(define (my-eval exp env)
   (cond ((number? exp) exp)
         ((symbol? exp) .. ;; use ASSOC to look up EXP inside ENV
         ((list? exp) 
          (let ((exp^ ;; evaluate each subexpression recursively
                ))
            .. ;; use APPLY here
          ))

通过这样的环境(((+。,+)(x。5))