Символы реляционных операторов в 3-х стороннем сравнении Пролог - PullRequest
2 голосов
/ 03 мая 2020

Стандарт Prolog ISO / IEC 13211-1: 1995 / Cor.2: 2012, особенности compare/3:

8.4.2 сравнение / 3 - трехстороннее сравнение

8.4.2.1 Описание

сравнить (Порядок, X, Y) истинно, если только порядок ордеров объединяется с R, который является одним из следующих атомов: '=' тогда, когда X и Y являются идентичными терминами ( 3.87), '<' если X term_precedes Y (7.2) и '>' если Y term_precedes X. [...]

Недавно меня осенило, что использование атомов < = и > несколько странно:

  • Предикаты (<)/2 и (>)/2 express арифмети c сравнение.

  • С другой стороны, предикат (=)/2 равен syntacti c term объединение .

ИМХО, на гораздо более естественный выбор будет (иметь) (en) @<, == и @>, поскольку это именно те предикаты, выполнение которых определяется compare/3.

Итак: почему были выбраны атомы < / = / > - и нет т @< / == / @>?

Ответы [ 2 ]

3 голосов
/ 03 мая 2020

Недавно меня осенило, что использование атомов <, = и> несколько странно:

Предикат compare/3 существовал в нескольких системах Пролога до того, как нашел свой путь. в основной стандарт ISO Prolog. Выбор здесь (я был редактором WG17 Core в то время) заключался в том, чтобы сохранить обратную совместимость.

2 голосов
/ 03 мая 2020

compare/3 существует как встроенный с 1982 года, который является почти вторым изданием руководства DECsystem 10. Первое из 1978 года (так называемое руководство пользователя) не содержало compare/3, ни (@<)/2 и связанных встроенных программ; только (==)/2 и (\==)/2. Руководство 1982 года ссылается в определении этого встроенного на «стандартный порядок». И, таким образом, три символа (которые в стандарте составляют область order) имеют некоторый смысл в контексте , . Сам стандарт относится к 7,2 терминам порядка через term_precedes .

Некоторые системы использовали == в качестве символа для идентификации, но изменили на =. Однако я никогда не встречал @< ни в одной системе.

Обратите внимание, что идентичность терминов хорошо определена даже при рассмотрении терминов с переменными и даже бесконечными деревьями, тогда как общий порядок терминов в таких случаях определяется лишь частично. .

...