2017-06-05 50 views
0

有人可以澄清爲什麼程序返回22嗎?很明顯,這個陳述不正確,但無論如何,它爲什麼會返回22?條件表達式,其語法和評估

謝謝你提前。

(define (proc x)  
     (cond (= x 22)  
      (display 3)  
      (display 4)  
    ) 
)  
(proc 3) 
+2

在第一COND子句,'='不是'#F'(它是一個原始操作者),因此它被認爲是真實的,'#t',和然後依次評估「x」和「22」,最終結果爲「22」。 – Renzo

回答

2

你忘了幾個括號。在此代碼:

(define (proc x) 
    (cond (= x 22) 
     (display 3) 
     (display 4))) 

您正在測試,如果=過程true - 它是,因爲在計劃一切都是truthy,除了#f,這是false。並且,如果=true,則返回對應於該條件的最後一個值,在這種情況下爲:22。對於cond正確的語法如下:

(define (proc x) 
    (cond ((= x 22) 
     (display 3) 
     (display 4)) 
     (else 'error))) 

(proc 22) 
=> 34 
(proc 3) 
=> 'error