2013-03-10 1 views
0

Я пытаюсь создать базу знаний. Моя проблема имеет gate/1 и terminal/1 и я определил следующее правило:Не могу понять ошибку предшествования оператора журнала Prolog

То, что я пытаюсь сказать, что: «Если существует затворе G и терминал T, то, что следует, что G не равен Т не равен 1 не равен 0.

я получаю следующее сообщение об ошибке:. ERROR: c:/noob.pl:140:0: Syntax error: Operator priority clash

Я даже не знаю, если я использую правильные операторы

ответ

1

проблема заключается в

G \== T \== 1 \== 0 

, которые должны быть написаны

G \== T, G \== 1, G \== 0, T \== 1, T \== 0 
+0

Спасибо, что работает. Ради простоты я оставил несколько символов, которые не были равны друг другу. При включении всех из них он становится очень длинным: O – karancan

+0

@karancan: с более чем двумя значениями, которые должны быть разными, может быть полезно использовать 'setof':' List = [G, T, 0, 1], setof (List, Set), length (List, N), length (Set, N) .' –

+0

Я должен изучить это. Я задаю еще один вопрос: надеюсь, вы не возражаете. У меня есть факт: 'connected (A, B): - connected (B, A)'. Затем, когда я задаю вопрос «связанный (X, Y)», я получаю бесконечное количество результатов (бесконечная рекурсия). Я просто хочу правило, которое является коммутативным. Не могли бы вы посоветовать мне это? – karancan

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