如何使用变量绑定进行eval?
即,给定'(+ 1 x)
或字符串"(+ 1 x)"
,我希望能够将x
绑定到任意val并执行eval。我怎么能这样做?
答案 0 :(得分:1)
您可以定义自己的计算简单表达式的函数,
在简单表达式上应该像这样
(my-eval '1 '()) ;=> 1
(my-eval 'x '((w . 6) (x . 3) (y . 7))) ;=> 3
并给出一个列表,它可以用MAP
评估每个部分,然后它将APPLY
从CAR
到CDR
。
为了帮助您入门,这里有一个骨架
(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))