SLIB (переносимая библиотека Scheme) имеет реализацию ERROR. Возможно, вы захотите либо посмотреть на это, либо использовать SLIB в своих программах.
Кроме этого, один из способов остановить программу - просто вызвать другую ошибку! Попробуйте что-то вроде этого (спасибо Stephen Houben ):
(define (error reason . args)
(display "Error: ")
(display reason)
(for-each (lambda (arg)
(display " ")
(write arg))
args)
(newline)
(scheme-report-environment -1)) ;; we hope that this will signal an error
Хотя это вызывает вторую (не связанную) ошибку, это, безусловно, остановит выполнение программы.