Ulrich Neumerkel поддерживает список с предикатами ISO и оцениваемых функций здесь: http://www.complang.tuwien.ac.at/ulrich/iso-prolog/prologue#status_quo
Но обычно управляющие конструкции 7,8 действительно не считаются БИП:
1 true/0. 2 fail/0. 3 call/1. 4 !/0. 5 (',')/2. 6 (;)/2 – disjunction.
7 (->)/2. 8 (;)/2 – if-then-else. 9 catch/3. 10 throw/1.
То есть из-за их они обычно не могут быть реализованы в ISO Prolog. Например, пункт Prolog, такие как:
and(A,B) :- A, B.
только приблизительно, что делает соединение, так как он не сможет правильно обработать разрез. Таким образом, эти (мета) предикаты составляют ядро.
Таким образом, вы можете считать себя работающим без бипов, если используете только набор 7.8. Если вы воздерживаетесь от использования call/1,!/0, (->)/2, catch/3 и throw/1, вы даже используете только Horn Clauses.
Это не не то, что ничто не может быть сделано в Хорна, много загадок и приложений NoSQL aleady работы, и вы можете, например, определить Пеано дополнение:
add(n, X, X).
add(s(X), Y, s(Z)) :- add(X, Y, Z).
Ниже приведен пример запуска 2 + 2 = 4:
?- add(s(s(n)), s(s(n)), X).
X = s(s(s(s(n)))).
Только это/2. Но попросите вашего профессора подтвердить, что вы не можете использовать * numbers * – CapelliC
Это смешное требование. Вы не можете делать _anything_ без встроенных предикатов. Вы уверены, что ваш инструктор не имел в виду нечто вроде «не использовать предикаты из« библиотеки (списков) »или так? –
Я считаю, что это« использование ТОЛЬКО встроенных предикатов ».. –