JPL将字符串解析为原子

时间:2015-09-17 09:06:59

标签: prolog swi-prolog jpl

假设我有以下代码,如果术语是使用谓词It works!的字符串,则打印string/1

Term string = org.jpl7.Util.textToTerm("\"test\"");
Query testQuery = new Query("string",string);

if(testQuery.hasMoreSolutions()) {
    System.out.println("It works!");
}

这不会打印任何内容,这不是我的预期。

更奇怪的是,用new Query("atom",string)替换查询现在可以正常工作,这意味着字符串作为原子而不是SWI-Prolog 7字符串传递,即使我将JPL库解析为文本使用双引号,它是字符串分隔符,而不是原子分隔符。

甚至更奇怪的是,Java调试器告诉我,术语string的名称为test(不带引号),并且键入string!所以textToTerm似乎产生了一个正确的字符串,但Term本身仍作为原子传递!

这是一个错误,还是默认行为?

编辑: JPL 7 docs状态

  

SWI Prolog V7字符串在JPL7中表示为Atoms,其类型为"字符串"

那么真的没有办法将真正的字符串传递给查询吗?

0 个答案:

没有答案