有人可以澄清为什么程序会返回22吗?很明显,这个陈述没有写得正确,但无论如何为什么它会返回22?
提前谢谢。
(define (proc x)
(cond (= x 22)
(display 3)
(display 4)
)
)
(proc 3)
答案 0 :(得分:2)
你忘记了几个括号。在这段代码中:
(define (proc x)
(cond (= x 22)
(display 3)
(display 4)))
您正在测试=
程序是true
- 它是什么,因为在Scheme中一切都是真实的,除了#f
,false
。鉴于=
为true
,将返回与该条件对应的最后一个值,在本例中为22
。 cond
的正确语法如下:
(define (proc x)
(cond ((= x 22)
(display 3)
(display 4))
(else 'error)))
(proc 22)
=> 34
(proc 3)
=> 'error