2013-09-02 4 views
1

я должен утверждать в SWI этот вид CLP (FD) правила:SWI-Prolog ошибка asserta

asserta(schedule(A,B) :- V = [S0,S1,S2],V ins 0..sup). 

, но я получаю эту ошибку:

ERROR: Syntax error: Operator expected 
    ERROR: asserta(schedule(A,B) :- V = [S0,S1,S2],V 
    ERROR: ** here ** 
    ERROR: ins 0..sup) . 

почему? Спасибо!

ответ

2

Есть две ошибки здесь:

Вы должны иметь CLP (FD) загружен в тот момент, когда чтение текста. Так что должно быть use_module(library(clpfd)) либо как директива, как в строке

:- use_module(library(clpfd)). 

или введенное в качестве цели на верхнем уровне. Это необходимо, потому что вы используете (ins)/2 в форме оператора.

Другая проблема - отсутствующие скобки. Следует, скорее всего, прочитать:

..., asserta((schedule(A,B) :- V = [_,_,_], V ins 0..sup)), ... 

В стороне, я не думаю, что утверждение такого правила имеет смысл. Динамические базы данных редко используются вместе с утвердительными правилами.

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