2016-11-13 4 views
2

Я создаю DSL, который использует имена для процедур (по существу), которые должны быть уникальными.Классификация ошибок ISO для множественного определения в Prolog DSL

Непонятно, какой термин ошибки следует использовать для представления второго определения.

exist_error sorta kinda подходит, но мне неудобно. Кажется, это подразумевает отсутствие определения, а не множественное определение.

permission_error (изменить, процедура, Название/Arity) представляется многообещающим, но, по-видимому, подразумевает, что «некоторые люди могут это сделать, но не вы». Без дальнейшего просветления я буду использовать это.

syntax_error sorta kinda подходит, но определяется как только для read_term.

Должен ли я определить свой собственный здесь? Спектр говорит: «Используйте их, когда сможете».

ответ

0

В старые времена не было никаких SWISH или Pengines, в которых прокси-сервер Prolog использовался несколькими пользователями, и, вероятно, с помощью пакетной обработки было мало осознания того, что ресурсы могут быть заблокированы другими пользователями. Таким образом, объяснение термина ошибки permission_error/3 является mostlikely в SICStus Прологе описывает его здесь:

«Ошибка разрешения возникает при попытке выполнить операцию, которая среди видов деятельности, что система в целом способен , и среди видов, которым вы в целом разрешены, запрос, но в указанное время это запрещено. "
http://sicstus.sics.se/sicstus/docs/4.0.4/html/sicstus/ref_002dere_002derr_002dper.html

Но я согласен, от названия термина ошибки, можно было бы ожидать Диапазон его применения лишь некоторые нарушения доступа или модификации правил, а не некоторые семантические ограничения по синтаксической структуры, такие как DSL.

Но вы, вероятно, не единственный, у кого есть эти проблемы. Если в вашей системе Prolog есть подсистема обмена сообщениями, где вы можете легко связать условия ошибок с удобным текстом, я не вижу причин, чтобы не вводить новые условия ошибки.

Вы могли бы принять условие ошибки последующей уже предложенную SICStus Пролог и не нашли в базовом стандарте ISO:

«Ошибка консистенции возникает, когда два в противном случае действительных значений или операций были определены, что не соответствует друг с другом." http://sicstus.sics.se/sicstus/docs/4.0.4/html/sicstus/ref_002dere_002derr_002dcns.html

«Ошибка контекста, когда цель или декларация представляется в неправильном места происходит Там может или не может быть ничего плохого с целью или деклараций как таковые;. Дело в том, что она неуместна. " http://sicstus.sics.se/sicstus/docs/4.0.4/html/sicstus/ref_002dere_002derr_002dcon.html

Особенно SWI-Prolog имеет такую ​​подсистему обмена сообщений и SWI-Prolog уже давно попрощался с взаимодействием с другими системами Пролога. Поэтому единственной опасностью, если вы будете использовать обмен сообщениями SWI-Prologs, является некоторая блокировка, которая может вас не беспокоить.

+0

Возможно, я слишком много читаю, чтобы «использовать их, когда сможешь». Было бы неплохо, если бы мои сообщения попали в сообщения SWI-Prolog. – Anniepoo

+0

Проверьте сами http://www.swi-prolog.org/pldoc/doc_for?object=print_message/2 и http://www.swi-prolog.org/pldoc/doc_for?object=message_hook/3. Существует ошибка категории «logging». –

 Смежные вопросы

  • Нет связанных вопросов^_^