我有一个包含表达式的变量。例如:(> 1 2),我如何评估它?

时间:2010-10-20 00:34:32

标签: scheme

所以我写了这段代码。如何在if语句中获取x以进行评估?此刻,x总是成功,if语句永远不会失败。

(define expand
  (lambda (exp)
    (cond
     ((symbol? exp) exp)
     ((pair? exp)
      (case (car exp)
       ((and)
        (if (null? (cdr exp)) '(quote #t)
            (if (null? (cddr exp)) (cadr exp)
                (let ((x (cadr exp))
                      (thunk (lambda () (expand '(and ,(cddr exp))))))
                  (if x (thunk) 
                      `(quote ,x))))))
       (else exp)))
     (else exp))))

1 个答案:

答案 0 :(得分:1)

使用eval,例如:

(if (eval x (null-environment 5))
    (thunk)
    `(quote ,x))