Я могу создать pyDatalog.predicate, как показано в документации:
from pyDatalog import pyDatalog
import pyDatalog.pyDatalog as dlog
pyDatalog.clear()
pyDatalog.create_terms('X, Y, p, f')
@pyDatalog.predicate()
def p(X,Y):
yield (1,2)
yield (2,3)
result = pyDatalog.ask('p(1,Y) & p(1,Y)')
print(result) # {(2,)}
Но тогда ...
body = p(1,Y) & p(1,Y) # Fail
f(X) <= body
получает:
body = p(1,Y) & p(1,Y) # Fail
TypeError: unsupported operand type(s) for &: 'generator' and 'generator'
Можно ли использовать этот предикат только через анализатор?