Я просто пытаюсь понять программирование ограничений в 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 .
?-
Что здесь не так? Кажется, я включил библиотеку, но первая строка примера из учебника выдает синтаксическую ошибку.
Все учебники, которые я могу найти, похоже, используют такие операторы, как # =, #
Или я неправильно читаю учебные примеры?
Обновление: пытаюсь понять вещи из ответа Хорша ниже. Я могу заставить это работать, если использую библиотеку и запускаю строку в интерактивном терминале. Но если я попытаюсь импортировать библиотеку и использовать эти операторы в исходном файле, это снова вызовет ошибку. Что я не понимаю?
Обновление 2:
ОК. Если в исходном файле я вызываю библиотеку, а затем пишу правило, содержащее знак #>. Затем я пытаюсь проконсультироваться с ним из командной строки. Это вызовет ошибку, а синтаксис #> не распознан. Если импортировать библиотеку в командную строку до того, как попытается обратиться к программе, она будет работать. Это может быть правильно?