15 lines
360 B
Python
15 lines
360 B
Python
|
|
from pyswip import Prolog, registerForeign, Atom
|
|
|
|
def atom_checksum(*a):
|
|
if isinstance(a[0], Atom):
|
|
r = sum(ord(c)&0xFF for c in str(a[0]))
|
|
a[1].value = r&0xFF
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
p = Prolog()
|
|
registerForeign(atom_checksum, arity=2)
|
|
print list(p.query("X='Python', atom_checksum(X, Y)", catcherrors=False))
|