2017-06-05 20 views
0

誰かが手順が22に戻る理由を明確にすることはできますか?このステートメントは正しく書かれていないが、とにかくそれが22を返す理由は明らかです。条件式、その構文と評価

ありがとうございます。

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

、及び'x'と' 22'が順番に評価され、最後の結果は '22'です。 – Renzo

答えて

2

括弧をいくつか忘れました。 - スキームですべてがtruthyあるので、それは、ある、#f除いて、falseある=手順がtrueある場合は、テストしている

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

:このコードで。 =trueの場合、その条件に対応する最後の値が返されます。この場合は、22です。次のようにcondの正しい構文は次のとおりです。最初のCOND句、 `=` `#1 F`(それはプリミティブオペレータある)ではないので、それは`#のT '、真であると考えられるで

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

(proc 22) 
=> 34 
(proc 3) 
=> 'error 
関連する問題