我正在学习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
>