#scheme #exit
#схема #выход
Вопрос:
Я хотел бы что-то вроде:
(cond ((< x 3) (and (display "Error Message") (exit)))
(else (foo y))
Другими словами, я хотел бы отобразить сообщение и завершить работу при выполнении условия. Как я могу это сделать? Существует ли такая функция выхода?
Заранее спасибо!
Ответ №1:
SRFI 23 предоставляет error
. Для условий ошибки это намного лучше, чем вызов exit
, потому что это позволяет другому коду перехватить ошибку и выполнить обработку ошибок. (В любом случае некоторые реализации реализуются exit
как исключение, но это не отменяет моей точки зрения, что использование error
более уместно.)
SRFI 34 предоставляет более полное средство исключения и может быть даже более подходящим, чем error
.
Ответ №2:
Схема R5RS и предыдущие версии не требуют функции выхода, хотя большинство реализаций предоставляют ее. Схема R6RS требует функции выхода. Даже без функции выхода, как правило, можно организовать поток управления вашей программой так, чтобы он просто «отваливался от конца», когда он завершен. Если вам нужен выход, а ваша реализация его не предоставляет, вы можете создать свой собственный с помощью call / cc .
Ответ №3:
В Chez scheme я набираю:
(exit)
Это заняло у меня гораздо меньше времени, чем выход из vim в первый раз.