私はSchemeを学んでいます。私は最近、cond句の「else」という単語が欠落していることに気付く前に、プログラムのバグを見つけるのに(あまりにも多くの!)時間を費やしました。しかし、そのような状況での動作は少し奇妙に見えます。単純なプログラム(以下)だけで条件を試してみると、「whatever」はelse句で期待どおりに表示されますが、「else」がない場合は、周囲の二重引用符と解釈されない改行とともに表示されます。文字通り印刷された行。誰かが私に何が起こっているのか説明できますか?TIA。
(define (foo x)
(cond ((eq? x 0) (display "zero\n"))
(display "whatever\n")))
(define (bar x)
(cond ((eq? x 0 ) (display "zero\n"))
(else (display "whatever\n"))))
In the repl window:
Welcome to DrScheme, version 4.1.5 [3m].
Language: Pretty Big; memory limit: 128 megabytes.
> (foo 0)
zero
> (bar 0)
zero
> (foo 2)
"whatever\n"
> (bar 2)
whatever
>