Процедура 'error' не определена в plt-r5rs

У меня есть этот файл с именем myprog.scm:

(error "Not found!")

Запуск программы с использованием plt-r5rs myprog.scm дает ошибку:

error: undefined;
 cannot reference undefined identifier
  context...:
   /usr/share/racket/pkgs/r5rs-lib/r5rs/run.rkt: [running body]

Очевидно, plt-r5rs не определяет error процедуру.

  • Почему авторы plt-r5rs не определили error процедуру?
  • Как я могу определить или импортировать error процедуру, чтобы моя программа могла работать? Возможно, есть способ импортировать SRFI-23 Механизм сообщения об ошибках ?

person Flux    schedule 13.02.2020    source источник
comment
Релевантно: DrRacket, R5RS и процедура ошибки   -  person Flux    schedule 04.09.2020


Ответы (1)


Почему авторы plt-r5rs не определили error процедуру?

Похоже, что The Revised 5 Отчет по алгоритмической языковой схеме не определяет процедуру с именем error. Исходная среда, созданная plt-r5rs, содержит только значения и синтаксические формы, определенные в отчете (за исключением нескольких форм, специфичных для реализации перечисленных в документации, например #%require, которые не являются законными идентификаторами согласно R 5 RS).

Как я могу определить или импортировать error процедуру, чтобы моя программа могла работать? Возможно, есть способ импортировать SRFI-23 Механизм сообщения об ошибках?

Как вы, наверное, знаете, R 5 RS также не определяет модульную систему, поэтому нет переносимого способа что-либо импортировать. В частности, для plt-r5rs эта версия вашей программы работает:

(#%require srfi/23)
(error "Not found!")

Конечно, если вы уже полагаетесь на детали plt-r5rs, я бы посоветовал просто использовать Racket или хотя бы R 6 RS.

person LiberalArtist    schedule 13.02.2020