相关疑难解决方法(0)

什么是Prolog中的 - >运算符,我该如何使用它?

我已经在一本书中读到了它,但根本没有解释.我也从未在程序中看到它.是Prolog语法的一部分吗?这是为了什么?你用它吗?

operators prolog

9
推荐指数
1
解决办法
8666
查看次数

Prolog中的谓词控制

对Prolog谓词控制有好奇心.

据说我有一个谓词f(A,X)和g(B).

f(A,X):- a,b,c, g(X).
g(B):- true.

a - returns true
b - returns true.
c - returns false.
where a,b and c are random predicates.
Run Code Online (Sandbox Code Playgroud)

如果c返回false,我如何继续g(X)在谓词中进行求值f(A,X)

predicate prolog

9
推荐指数
1
解决办法
1万
查看次数

prolog中的守卫条款?

它们存在吗?他们是如何实施的?

所述coroutining SWI-Prolog的(的谓词freeze,when,dif等)具有的功能警卫.它们如何适合首选的Prolog编程风格?

我是很新的逻辑编程(有序言和共)和事实,即它不是纯粹的声明,并要求即使在非常简单的情况下程序上的考虑有点困惑(见本关于使用问题\==dif).我错过了重要的事吗?

prolog guard-clause prolog-dif prolog-coroutining

9
推荐指数
1
解决办法
932
查看次数

我不明白Prolog中的标签是做什么的

我查看了手册和文档,但仍然不明白.我正在尝试实现一个数独解决方案,在写出游戏的所有其他规则后,我根据老师的指示添加了标签(Board).

但是我仍然没有得到它的工作原理或它正在做什么.不应该有其他约束(我有检查说数字必须是1..9,行必须全部不同,等等)给我自己的答案?

prolog sudoku clpfd

7
推荐指数
1
解决办法
2910
查看次数

冻结/ 2个目标阻止变得无法访问的变量

我制作了以下小程序来确定用于目标的内存freeze(X,Goal)是否在X无法访问时被回收:

%:- use_module(library(freeze)). % Ciao Prolog needs this

freeze_many([],[]).
freeze_many([_|Xs],[V|Vs]) :-
   freeze(V,throw(error(uninstantiation_error(V),big_freeze_test/3))),
   freeze_many(Xs,Vs).

big_freeze_test(N0,N,Zs0) :-
   (  N0 > N
   -> true
   ;  freeze_many(Zs0,Zs1),
      N1 is N0+1,
      big_freeze_test(N1,N,Zs1)
   ).
Run Code Online (Sandbox Code Playgroud)

我们运行以下查询......

?- statistics, length(Zs,1000), big_freeze_test(1,500,Zs), statistics.
Run Code Online (Sandbox Code Playgroud)

...使用不同的Prolog处理器并查看内存消耗情况. 有什么区别!

(AMD64) SICStus Prolog 4.3.2 : global stack in use = 108   MB
(AMD64) B-Prolog       8.1   : stack+heap   in use = 145   MB
(i386)  Ciao Prolog    1.14.2: global stack in use =  36   MB (~72 MB w/AMD64)
(AMD64) SWI-Prolog     7.3.1 : …

prolog prolog-coroutining

6
推荐指数
1
解决办法
275
查看次数

Prolog中"false"和"no"之间的区别是什么?

我开始学习Prolog之后的Prolog 编程:使用ISO标准.在介绍到,他们所作的断言语言的7页:"在序言答案没有被用来指没有与问题相结合,以记住,这是非常重要的.没有是不一样的错误." 那么为什么SWI-Prolog使用falsetrue语句代替yesno

prolog swi-prolog prolog-toplevel

5
推荐指数
1
解决办法
2162
查看次数