PySWIP 0.1.3 released
yuce
yucetekol at gmail.com
Fri Jun 1 10:09:53 CEST 2007
I am pleased to announce the 0.1.3 version of PySWIP.
PySWIP is a GPL'd Python - SWI-Prolog bridge which enables querying
SWI-Prolog in your Python programs.
PySWIP includes both an (incomplete) SWI-Prolog foreign language
interface and a utity class that makes it easy querying SWI-Python.
Since it uses SWI-Prolog as a shared library and ctypes to access it,
PySWIP doesn't require compilation to be installed.
This version breaks the compatibility with previous versions.
Example:
>>> from pyswip.prolog import Prolog
>>> prolog = Prolog()
>>> prolog.assertz("father(michael,john)")
[{}]
>>> prolog.assertz("father(michael,gina)")
[{}]
>>> list(prolog.query("father(michael,X)"))
[{'X': 'john'}, {'X': 'gina'}]
>>> for soln in prolog.query("father(X,Y)"):
... print soln["X"], "is the father of", soln["Y"]
...
michael is the father of john
michael is the father of gina
Foreign Functions Example:
Since version 0.1.3 of PySWIP, it is possible to register a Python
function as a Prolog predicate through SWI-Prolog's Foreign Function
Interface.
Here's an example:
from pyswip.prolog import Prolog
from pyswip.easy import registerForeign, getAtomChars
def hello(t):
print "Hello,", getAtomChars(t)
return True
hello.arity = 1
registerForeign(hello)
prolog = Prolog()
prolog.assertz("father(michael,john)")
prolog.assertz("father(michael,gina)")
list(prolog.query("father(michael,X), hello(X)"))
Outputs:
Hello, john
Hello, gina
Requirements:
* Python 2.3 and higher.
* ctypes 0.9.9.9 and higher.
* SWI-Prolog 5.6.x and higher (most probably other versions will also
work).
* libpl as a shared library.
* Works on Linux and Win32, should work for all POSIX.
Changes since version 0.1.2:
* Renamed `pyswip/util.py` to `pyswip/prolog.py`.
* New module `pyswip.easy`.
* Now it is possible to register a Python function as a Prolog
predicate through SWI-Prolog's Foreign Function Interface.
* Additions to the core library.
* Added example, *register foreign* which shows how to register a
Python function as an SWI-Prolog predicate.
* Added example, *Towers of Hanoi*
PySWIP homepage is at: http://code.google.com/p/pyswip
Downloads at: http://code.google.com/p/pyswip/downloads/list
Discussion Group is at: http://groups.google.com/group/pyswip
Regards,
Yuce Tekol yucetekol [at] gmail [dot] com>
More information about the Python-announce-list
mailing list