我在一个名为“testing.pl”的文件中有下一个代码:
fact(1).
fact(2).
fact(3).
funcA(X) :- funcB(X).
funcB(X) :- fact(X).
testing :- funcA(_X).
然后,在 SWI-Prolog 解释器中查询funcA(X).
,输出为:
X = 1 ;
X = 2 ;
X = 3.
但是,每当我查询testing.
输出是:
true ;
true ;
true.
所以,我的问题是:
如何将规则的结论用作另一个规则的前提(funcA(X)
在右侧testing
),但效果与我查询该前提(funcA(X)
)相同?
在上面的示例中,我想testing.
在我的“testing.pl”文件的某个位置编写并让 funcA(X) 像我使用解释器查询时一样执行相同的操作,因此 funcB(X) 将检查所有X 可以从 fact(N) 中获取并返回的值。
我希望的结果是写作testing.
并出现在屏幕上:
X = 1 ;
X = 2 ;
X = 3.
谢谢。