Я просто пытаюсь понять программирование ограничений в SWI-Prolog, глядя на этот урок: http://en.wikibooks.org/wiki/Prolog/Constraint_Logic_Programming
Однако я, кажется, падаю на первое препятствие.
?- use_module(library(clpfd)).
true.
?- X #> Y, X in 1..3, Y=2.
ERROR: Syntax error: Operator expected
ERROR: X
ERROR: ** here **
ERROR: #> Y, X in 1..3, Y=2 .
?-
Что здесь не так? Я, кажется, включил библиотеку, но первая строка примера из учебника выдает синтаксическую ошибку.
Кажется, что все учебники, которые я могу найти, используют такие операторы, как # =, # <и т. Д. Но мой SWI-Prolog их опровергает. Являются ли они дополнительным синтаксисом, который поставляется с этой библиотекой ограничений? (И я не могу загрузить его?) </p>
Или я неправильно читаю учебные примеры?
Обновление: пытаясь понять вещи из ответа Хорша ниже. Я могу заставить это работать, если я использую библиотеку и запускаю линию в интерактивном терминале. Но если я попытаюсь импортировать библиотеку и использовать эти операторы в исходном файле, она снова выдаст ошибку. Что я не понимаю?
Обновление 2:
OK. Если в моем исходном файле я вызываю библиотеку, а затем пишу правило, которое содержит #>. Затем я пытаюсь справиться с этим из командной строки. Это вызовет ошибку, и синтаксис #> не распознается. Если импортировать библиотеку в командную строку перед тем, как попытаться обратиться к программе, она работает. Это может быть правильно?