How to Design Programs第二版中的练习 42解释说 DrRacket 突出显示了cond
下面代码中的最后两个子句,因为测试用例并未涵盖所有可能的用例。
; TrafficLight -> TrafficLight
; given state s, determine the next state of the traffic light
(check-expect (traffic-light-next "red") "green")
(define (traffic-light-next s)
(cond
[(string=? "red" s) "green"]
[(string=? "green" s) "yellow"]
[(string=? "yellow" s) "red"]))
我的理解是else
最后的一个子句应该涵盖其余的情况,所以我尝试替换最后的表达式:
(define (traffic-light-next s)
(cond
[(string=? "red" s) "green"]
[(string=? "green" s) "yellow"]
[(string=? "yellow" s) "red"]
[else "green"]))
这并不能解决突出显示的问题。这里发生了什么?