2010-10-20 20 views
1

所以我寫了這段代碼。我如何獲得if語句中的x來評估?此刻,x總是成功,if語句永遠不會失敗。我有一個變量,包含一個表達式。例如:(> 1 2),我如何評估它?

(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

使用eval,例如:

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

謝謝,我已經試過了。但它給了我這個錯誤:#[編譯過程1(「全球」#x5)#x3#x412F2C]已被調用1參數'它只需要2個參數。 – Chris 2010-10-20 00:42:59