Я новичок в Scheme, и у меня есть фоновое кодирование, в основном на C ++ / Java, и немного Python.Я делаю упражнения в «Изучении и интерпретации компьютерных программ», и я столкнулся с этой проблемой:
В книге подробно описывается структура специальной формы «if» как (if (условная) (последующее предложение)(альтернативный пункт)).Однако ничто не указывает на то, что альтернативное предложение ДОЛЖНО быть включено.
Фактически, в упражнении, в котором я сейчас занят (упражнение 1.22, для всех, кто интересуется), они предоставляют некоторый код, который мы должны использовать при создании процедуры, которая проверяет простые числа в заданном диапазоне.и дает количество времени, необходимое для их поиска.
(define (start-prime-test n start-time)
(if (is-prime n)
(report-prime (- (runtime) start-time))))
Это не сработало, поэтому я немного его изменил:
(define (start-prime-test n start-time)
(if (is-prime n)
(report-prime (- (runtime) start-time))
(display ""))) ;prints nothing
Первая версия приводит к "SchemeError: слишком малооперанды ... "Я изменил это, чтобы иметь альтернативное предложение, которое по существу ничего не делает, и я больше не получаю ошибку при тестировании процедуры.
Я просто хочу знать, является ли требование альтернативного предложения стандартным для большинства интерпретаторов Scheme, или оно уникально для того, который я использую.В настоящее время я использую двух разных интерпретаторов, потому что первый, который я использовал, не включает встроенные процедуры, подробно описанные в книге, поэтому я заметил, что в интерпретаторах Scheme есть некоторые существенные различия.Но насколько я знаю, это было очень трудно найти полезную информацию через поиск в Google.
Любая помощь будет принята с благодарностью;Мне не нравится включать процедуры "ничего не делать".