我有一些.pl
文件,我想调用python脚本中声明的谓词。我怎样才能做到这一点?从python调用prolog谓词
例如,test.pl
rD([], Ans, Ans).
rD([X|Xs], Ans, Acc) :-
member(X, Acc),
rD(Xs, Ans, Acc), !.
rD([X|Xs], Ans, Acc) :-
\+member(X, Acc),
append(Acc, [X], AccNew),
rD(Xs, Ans, AccNew), !.
工作像
?- rD([1,2,3,4,5,4], X).
X = [1, 2, 3, 4, 5].
我想从Python脚本以某种方式实现rD
和结果变量
result
[1, 2, 3, 4, 5]
PS得到答案:这是只是一个例子,我不想重写我现在的Prolog pr ogram。
是的,它是一种变种。但不是真的可用 – 2011-05-25 15:41:13
@ garm0nboz1a:如果有特定的步骤需要澄清,我很乐意尝试。该方法将SWI-Prolog程序视为“黑盒子”。因此,尽管现有的.pl编码“不知道”Python调用者,但这样的调用者必须承担解析Prolog顶级查询结果并对其做适当处理的负担,例如,分配给一个变量。你的例子并不清楚Python代码是否需要“识别”result的数据类型,或者只是将所有的值视为字符串。所以你的问题有很多未知的方面(我)。 – hardmath 2011-05-26 14:12:24