7得票1回答
为什么我的Prolog矩阵答案中会出现“...”?

我写了一段小代码来创建坐标矩阵(类似于棋盘),如下所示: createMatrix(N,M,R) :- creaMatriu(N,M,A), reversed(R,A). creaMatriu(N,0,[T]) :- creafila(N,0,T),!. creaMatriu(N,M,[T|...

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

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

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

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

7得票2回答
在PROLOG查询中,是否/否定的返回结果是什么?

我正在学习PROLOG,但是我很难理解为什么我执行的查询结果会以“yes/no”结束。以下是我的知识库: male(albert). male(bob). male(bill). male(carl). male(charlie). male(dan). male(edward). fem...

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

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

8得票5回答
SWI-Prolog如何显示完整答案(列表)?

我正在尝试将一个字符串转换为ASCII码列表,如下所示: 7 ?- string_to_list("I'm a big blue banana in space!", C). C = [73, 39, 109, 32, 97, 32, 98, 105, 103|...]. 8 ?- ...

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

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

13得票1回答
Prolog匿名变量

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

7得票2回答
Prolog中的“false”和“no”的区别是什么?

我开始学习Prolog,使用的书是Programming in Prolog: Using the ISO Standard。在语言介绍的第7页中,他们提出了这样一个观点:“在Prolog中,答案no表示没有任何东西与问题相匹配。记住no并不等同于false。”那么为什么SWI-Prolog使...

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

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