Я в процессе изучения Scheme. Недавно я потратил (слишком много!) времени, пытаясь найти ошибку в программе, прежде чем понял, что мне не хватает слова «else» в предложении cond. Но поведение в таких обстоятельствах кажется немного странным. Экспериментируя с условиями с помощью простой программы (ниже), «что угодно» отображается, как и ожидалось, в предложении else, но также отображается, но без «else», отображается с окружающими двойными кавычками и неинтерпретируемым новым строка напечатана буквально. Кто-нибудь может объяснить мне, что происходит? ТИА.
(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
>