SWI Prolog игнорирует несмежный предикат

Я пытаюсь понять, как правильно использовать предикат discontiguous/1 в (SWI) Prolog.

Пусть buumi.pl - это маленький файл псевдофактов:

discontiguous(buumi/1).
buumi(eins).
buri(zwei).
buumi(drei).

Выполнение swipl -s Buumi.pl однако все же дает это предупреждение:

% swipl -s Buumi.prolog
Warning: [...]/Buumi.prolog:5: Clauses of buumi/1 are not together in the source-file

Документация довольно расплывчата и просто указывает

discontiguous :PredicateIndicator, ...

но не дает конкретного примера о том, как его использовать. Я нашел несколько примеров, которые предполагают, что я правильно их использую; по крайней мере, swipl не жалуется, но опять же, он не соблюдает мою просьбу. Что я здесь делаю неправильно?

1 ответ

discontiguous/1 является директивой ISO. Вы должны указать его как

:- discontiguous(pred/2).

в начале текста Пролога.

licensed under cc by-sa 3.0 with attribution.