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-синтаксиса.