DrRacket, R5RS и процедура ошибки
Мне нравится DrRacket IDE, но в настоящее время я создаю любимый проект, в котором я хотел бы быть независимым от него, то есть я обязан использовать только стандартные процедуры R5RS.
Дело в том, что в DrRacket есть эта процедура под названием "ошибка", которую я хотел бы продолжить использовать, но я не могу найти ее в стандартах.
Я хотел бы знать, есть ли способ эмулировать эту процедуру "ошибки", используя только процедуры Стандартов, чтобы код был переносимым между различными реализациями Схемы.
Я попытался "отобразить", но это не совсем то, что я хочу, это не сигнализирует об ошибке при выводе.
2 ответа
Ну, в соответствии с этим: http://srfi.schemers.org/srfi-23/srfi-23.html, процедура ошибки довольно широко доступна, поэтому я думаю, что вы были бы в безопасности, используя это.
Это реализация, которую наш лектор дал нам:
;;; create binding for error
(define error #f)
;;; capture toplevel continuation
;;; assign a function to error, allowing a variable number of arguments to
;;; be passed
(call-with-current-continuation (lambda (k)
(set! error
(lambda error-arguments
(display ">>>> ERROR ")
(newline)
(k error-arguments)))
'done))