How to Design Programsの第2版の演習42ではcond
、テストケースがすべての可能なケースを網羅しているわけではないため、DrRacketが以下のコードの最後の2つの句を強調していると説明しています。
; 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"]))
これはハイライトの問題を解決しません。ここで何が起こっているのですか?