процедура 'ошибка' не определена в plt-r5rs - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть этот файл с именем 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 Механизм сообщения об ошибках ?

1 Ответ

0 голосов
/ 13 февраля 2020

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

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

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

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

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

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

...