33得票5回答
SWI-Prolog - 显示长列表

我正在使用 SWI-Prolog,想要打印一个列表,但是如果列表有超过9个项目——它看起来像这样——[1, 15, 8, 22, 5, 19, 12, 25, 3|...] 有没有一种方法可以显示整个列表?

31得票2回答
为什么这个Prolog查询既是真的又是假的?

我的SWI-Prolog知识库包含以下两个事实:f(a,b). f(a,c). 现在,如果我提出以下查询:?- f(a,c). true. 但是。?- f(a,b). true ; false. 为什么f(a,b)既为真又为假?当知识库里有三个事实时也会发生这种情况。如果我将f(a,d)添加到...

27得票1回答
反身传递闭包的定义

许多谓词本质上使用某种形式的传递闭包,但发现必须解决终止问题。为什么不使用 closure0/3 一劳永逸地解决它呢? :- meta_predicate closure0(2,?,?). :- meta_predicate closure(2,?,?). :- meta_predicat...

14得票2回答
Prolog在尝试使用:-时出现“未定义的过程”错误

我在Windows上使用SWI-Prolog并遇到了以下错误:14 ?- parent(X, Y) :- child(Y, X). ERROR: toplevel: Undefined procedure: (:-)/2 (DWIM could not correct) 我不是完全确定发生了什...

14得票3回答
在Prolog中实现“last”函数

我正在通过学习Ulle Endriss的讲义来感受Prolog编程。当我的练习解决方案行为不如预期时,我发现很难给出一个好的解释。我认为这与我对Prolog求值表达式的不稳定理解有关。 第20页上的练习2.6要求使用递归实现类似于内置谓词last的last1谓词。我的尝试如下: last1...

13得票1回答
Prolog匿名变量

这是我对Prolog变量的理解: 单个下划线代表匿名变量,每次出现时就像一个新的变量。 以下划线开头的变量名,比如_W,并不是匿名变量。或者在Prolog中生成的变量名(比如_G189),也不被视为匿名变量: ?- append([1,2],X,Y). X = _G189 Y = [1, 2...

12得票1回答
为什么SWI-Prolog只会给出第一个答案?

我是Prolog的新手。 我正在尝试简单的示例来学习。 我有一个具有以下行的 .pl 文件:parent(pam,bob). parent(tom,bob). parent(tom,lio). parent(bob,ann). parent(bob,pat). parent(pat,jim)....

12得票2回答
Prolog:编写一个打印“Hello World”的过程

我想将这个简单的东西加载到我的编辑器中:Write:-repeat,write("hi"),nl,fail. 怎样才能使它打印“hi”? 我目前正在尝试进行文件->新建操作 并将文件保存在E:\Program Files\pl\xpce\prolog\lib中命名为Write 执行...

8得票3回答
创建和使用显式列表 vs 遍历失败的枚举

我经常遇到这个问题,但我从来不确定应该采用哪种方法。下面是处理一些季节事实的两种方法。 我想要弄清楚的是是否使用方法1或2以及每种方法的利弊,特别是对于大量的事实。 方法1似乎很浪费,因为事实是可用的,为什么要建立它们的列表(特别是一个大列表)。如果列表足够大,这肯定会有内存影响?而且它没...

8得票2回答
使用SWI-Prolog的toplevel可以获得多个解决方案

我是SWI-Prolog的初学者(但有一些Borland Prolog的经验),我遇到了以下测试代码的奇怪行为: test(10). test(1). 预计查询?-test(A)会得到2个解决方案,类似于A = 10; A = 1。然而,只有A = 10被生成。我这里没有使用cut操作符...