Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jpl中调用listing函数_Java_Prolog_Swi Prolog_Jpl - Fatal编程技术网

Java 在jpl中调用listing函数

Java 在jpl中调用listing函数,java,prolog,swi-prolog,jpl,Java,Prolog,Swi Prolog,Jpl,我想知道是否有人使用JPL中的“listing.”命令来检查Prolog知识库的内容?JPL要求您构造查询,并根据您在查询中设置的变量返回解决方案。例如Java: Query q = new Query("holdsAt((X,Y) = true, 3)"); while ( q.hasMoreSolutions() ){ Hashtable s = q.nextSolution(); System.out.println(s.get("X")+", "+s.get("Y"));

我想知道是否有人使用JPL中的“listing.”命令来检查Prolog知识库的内容?JPL要求您构造查询,并根据您在查询中设置的变量返回解决方案。例如Java:

Query q = new Query("holdsAt((X,Y) = true, 3)");
while ( q.hasMoreSolutions() ){
    Hashtable s = q.nextSolution();
    System.out.println(s.get("X")+", "+s.get("Y"));
}
我看不出这对于清单/0,甚至清单/1如何工作,因为清单/0需要实例化的输入。目前我正在玩弄表单的代码

predicate_property(L,interpreted), 
\+ predicate_property(L, built_in), 
\+ predicate_property(L,imported_from(_)), 
current_predicate( X, L), current_predicate(X/Z).
它为知识库中现有的函数返回:

myFunction:-
    myGoal1,
    myGoal2.
myPredicate:-
    myGoal1,
    myGoal2.
答案是:

L = myFunction(_G403,_G404),
X = myFunction,
Z = 2 
但这是不够的,因为没有一个进球会回来。我假设如果不能使用JPL调用listing函数,我需要的是一个函数,该函数将谓词头作为变量返回,同时返回必须满足的相关目标列表。不幸的是,我不熟悉listing函数的内部结构,因此我不确定如何进行此操作


提前感谢

我有一个函数目前正在运行,但我担心它不如“列表”调用有效

getClauses(Y):-
    predicate_property(L,interpreted), 
    \+ predicate_property(L, built_in), 
    \+ predicate_property(L,imported_from(_)), 
    current_predicate( X, L), 
    current_predicate(X/Z),
    findall((L, T), clause(L, T), Y).
它为知识库中存在的谓词返回:

myFunction:-
    myGoal1,
    myGoal2.
myPredicate:-
    myGoal1,
    myGoal2.
结果是:

?- getClauses(Y).
Y = [ (myPredicate, myGoal1, myGoal2)] 

请注意,这对从其他模块导入的谓词不起作用。

后续:结果表明findall过多。