从python调用prolog谓词
|
我有一些
.pl
文件,我想从python脚本中调用在其中声明的谓词。我怎样才能做到这一点?
例如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程序。
没有找到相关结果
已邀请:
4 个回复
俯乡骚钵皆
应该可以完成。
骇毖煽洁铂
模块,可以将来自外部命令的stdout通过管道传递到Python进程并在其中作为流读取。 这减少了为SWI-Prolog选择命令行参数的问题。可以通过类Unix系统上的shell脚本或Windows上的\“ DOS \” batch / cmd文件间接调用SWI-Prolog,但是我将省略对这种间接调用的进一步说明。 特别参见第二节中的讨论。 WI8ѭ和ѭ9above选项的SWI-Prolog手册(上面链接)2.4.2。例如:
可能会做你想要的。
选项禁止显示标题/欢迎消息,您可能想简化对Python接收到的输出的解析。
墩瓣茅械
,它将为您提供Python3版本。 要查询存储为Knowledge_base.pl的现有知识库,请执行以下操作:
扫窟