Prolog
Для тех, кто хочет использовать Prolog из Python, существует несколько возможностей:
• Версия GNU Prolog (сайт: http://gprolog.sourceforge.net) интегрируется с Python посредством пакета bedevere (сайт: http://bedevere.sourceforge.net)
• Имеется пакет PyLog (http://www.gocept.com/angebot/opensource/Pylog) для работы с SWI–Prolog (http://www.swi–prolog.org) из Python
• Можно использовать пакет pylog (доступен с сайта: http://christophe.delord.free.fr/en/pylog/), который добавляет основные возможности Prolog в Python
Эти три варианта реализуют различные способы интеграции возможностей Prolog в Python. Первый вариант использует SWIG, второй организует общение с Prolog–системой через конвейер, а третий является специализированной реализацией Prolog.
Следующий пример показывает использование модуля pylog:
from pylog import *
exec(compile(r"""
man('Socrates').
man('Democritus').
mortal(X) :- man(X).
"""))
WHO = Var()
queries = [mortal('Socrates'),
man(WHO),
mortal(WHO)]
for query in queries:
print "?", query
for _ in query():
print " yes:", query
Что выдает результат:
? mortal(Socrates)
yes: mortal(Socrates)
? man(_)
yes: man(Socrates)
yes: man(Democritus)
? mortal(_)
yes: mortal(Socrates)
yes: mortal(Democritus)
Разумеется, это не «настоящий» Prolog, но с помощью модуля pylog любой, кому требуются логические возможности Prolog в Python, может написать программу с использованием Prolog–синтаксиса.