Как досрочно завершить программу схемы? (Есть ли выход?)

Я хотел бы что-то вроде:

(cond ((< x 3) (and (display "Error Message") (exit)))

(else (foo y))

Другими словами, я хотел бы отобразить сообщение и завершить работу при выполнении условия. Как я могу это сделать? Есть ли такая функция выхода?

Заранее спасибо!


person hal88    schedule 15.10.2011    source источник


Ответы (3)


SRFI 23 предоставляет error. Для условий ошибки делать это намного лучше, чем вызывать exit, потому что это позволяет другому коду перехватывать ошибку и выполнять ее обработку. (Некоторые реализации все равно реализуют exit как исключение, но это не отменяет моей точки зрения, что использование error более уместно.)

SRFI 34 обеспечивает более полное средство исключения и может быть даже более подходящим чем error.

person Chris Jester-Young    schedule 16.10.2011

Схема R5RS и предыдущие версии не требуют функции выхода, хотя в большинстве реализаций она есть. Схема R6RS требует функции выхода. Даже без функции выхода, как правило, можно организовать поток управления вашей программы так, чтобы он просто «выпадал из конца» после завершения. Если вам нужен выход, а ваша реализация его не предоставляет, вы можете создать свой собственный с помощью call/cc.

person user448810    schedule 15.10.2011

На ChezScheme набираю:

(exit)

Это заняло у меня гораздо меньше времени, чем выход из vim в первый раз.

person Stephane Rolland    schedule 26.09.2019