Почему пролог gnu не поддерживает ложный предикат? (Я перешел на swi)

Я использовал штуку gprolog, чтобы делать некоторые вещи в прологе. Но теперь, тестируя еще какой-то код, я обнаружил, что он не поддерживает "false". Что поддерживает swi?


person Algific    schedule 12.11.2010    source источник


Ответы (2)


Используйте fail вместо false. Я считаю, что первое входит в стандарт ISO для Prolog. В противном случае определите это самостоятельно:

false :- 0=1.

or

fail :- 0=1.
person Fred Foo    schedule 12.11.2010
comment
Разве false :- fail. не было бы более четким определением, поскольку вы каким-то образом подразумеваете, что они имеют одинаковый эффект и / или являются синонимами? - person Giulio Piancastelli; 13.11.2010
comment
Я имел в виду: если ни один из них не доступен, вот как реализовать один из них. Изменил свой ответ. - person Fred Foo; 13.11.2010
comment
А пока в ISO Prolog есть и fail, и false. Он доступен в GNU и многих других системах. - person false; 17.02.2012

Последние версии GNU Prolog (1.4.0) действительно поддерживают false/0.

false/0 не определен в исходном стандарте ISO 1995 г., но является частью Кор.2: 2012.

person false    schedule 14.11.2010