python上的PySwip读(X)函数

时间:2017-06-06 19:29:43

标签: python prolog ffi swi-prolog

当我把它放在python中时

from pyswip import *
read = Functor("read",1)
X=Variable()
call(read(X))

响应是一个prolog shell

|:

如何制作raw_input而不是prolog shell?

由于

1 个答案:

答案 0 :(得分:0)

为此,您需要注册一个新的外部函数并从prolog代码中调用它。这个 python3 示例可以帮助您(with this python3 version pyswip):

from pyswip import Prolog, registerForeign, Atom

def py_read(*a):
    a[0].unify(input("PyInput:"))
    return True

registerForeign(py_read, arity=1)
result = list(Prolog.query('py_read(X)'))
print(result[0]['X'])