条件表达式,其语法和评估

时间:2017-06-05 06:21:44

标签: syntax scheme conditional evaluation

有人可以澄清为什么程序会返回22吗?很明显,这个陈述没有写得正确,但无论如何为什么它会返回22?

提前谢谢。

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

1 个答案:

答案 0 :(得分:2)

你忘记了几个括号。在这段代码中:

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

您正在测试=程序是true - 它是什么,因为在Scheme中一切都是真实的,除了#ffalse。鉴于=true,将返回与该条件对应的最后一个值,在本例中为22cond的正确语法如下:

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

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