如何咨询文件作为JPL模块(how to consult file as a module in j

2019-10-18 09:35发布

我想咨询下Prolog的文件作为一个模块,因为JPL不支持多个虚拟机序言。

在swipl控制台,我可以做这样的事情成功

?- consult(mod1:'data/load.pro') .

在java中(当然,它实际上是斯卡拉,但他们都在JVM之上),我可以咨询文件直接W / O问题

scala> import jpl._

scala> val q = new Query("consult", Array[Term](new Atom("data/load.pl")))

scala> q.query()
...
true

然而,当我试图把文件作为协商模块,我总是得到的异常。

scala> val q = new Query("consult", Array[Term](new Atom("mod1:data/load.pl")))

scala> q.query()
  jpl.PrologExcepion:  PrologException: error(existence_error(source_sink, 'mod1:data/load.pl'), _0)
    at jpl.Query.get1(Query.java:336)
    at jpl.Query.hasMoreSolutions(Query.java:258)
    at jpl.Query.oneSolution(Query.java:688)
    at jpl.Query.query(Query.java:747)
    at .<init>(<console>:15)
    at .<clinit>(<console>)
    ....

任何人都可以点我在喷气推进实验室的咨询序言文件模块的正确方法是什么? 谢谢!

Answer 1:

我想你可以换谓词模块的资格,当然,它会让你在你的源文件的完整路径传递的:

val q = new Query("mod1:consult('full_path_to/load.pl')")


文章来源: how to consult file as a module in jpl