标签: prolog

prolog to SQL转换器

在没有考虑太多的情况下,在我看来,一大堆Prolog的功能可以作为关系演算(又称SQL)来实现.

有没有人听说过任何自动将Prolog转换为SQL的工具?

sql prolog

14
推荐指数
2
解决办法
4381
查看次数

如何在Prolog中找到目标的所有解决方案?

我有谓词P1,一个接一个地返回值,如下所示:

-? P1(ARGUMENTS, RETURN).
-? RETURN = 1;
-? RETURN = 2;
-? RETURN = 3;
-? fail.
Run Code Online (Sandbox Code Playgroud)

我还有一个名为P2的谓词:

P2(ARGUMENTS, LIST) :- P1(ARGUMENTS, RETURN),... % SOMEHOW HERE I NEED TO INSERT ALL VALUES OF RETURN TO LIST.
Run Code Online (Sandbox Code Playgroud)

如何查找所有值RETURN并将其分配给LIST

prolog prolog-setof

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

Erlang编程:学习Prolog会有帮助吗?

学习Prolog是否有助于以特定于Erlang的方式学习Erlang?Erlang最初是作为一个并发的Prolog开始的,但现代的Erlang是否与Prolog相连(超出语法)?我的理解是学习Prolog的可能是在路上学习Lisp是好于任何语言编程好,但我想知道,如果学习的Prolog会帮助我学二郎明确,鉴于序言在Erlang的"起源故事"的角色.

erlang prolog

14
推荐指数
2
解决办法
783
查看次数

prolog - 打印变量的值

我只是无法弄清楚如何打印的价值X.这是我在顶级尝试的内容:

59 ?- read(X).
|: 2.
X = 2.

60 ?- write(X).
_G253
true.
Run Code Online (Sandbox Code Playgroud)

什么是_G253?我不想索引号,我想要X值绑定.我该怎么做才能打印出价值X

variables prolog return-value

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

你能在纯粹的prolog之间写/ 3吗?

我一直试图理解如何从回溯的Prolog谓词中产生一系列值.内置谓词between/3将在回溯时一次生成一个范围内的所有整数,因此编写它的示例可以帮助我完成任务.

我在现有的Prolog系统中寻找了一个实现,但between/3GNU Prolog 的实现是一个C函数,其技巧是调用另一个C函数"Pl_Create_Choice_Point",它允许它在回溯时产生额外的值.

prolog backtracking

14
推荐指数
2
解决办法
5619
查看次数

如何运行prolog代码?

我在prolog的家谱上工作.我不知道如何编译和运行这个程序.请给我一些基本步骤来运行它.

compilation prolog

14
推荐指数
3
解决办法
6万
查看次数

了解差异列表

我正在尝试理解Prolog中的差异列表,但我正在努力实际实现一个,每次我尝试这样做,我得到一个列表列表,但这不是我想要的.我正在尝试实现一个追加谓词,但到目前为止运气不佳.很少有尝试,所有这些都无效.

app(X, Y, Z) :- Z = [X|Y].

?- app([a,b,c], [z], Z).
Z = [[a,b,c],z].
Run Code Online (Sandbox Code Playgroud)

要么

app(X, Y, Z) :- Z = [X|Hole], Hole = Y.
Run Code Online (Sandbox Code Playgroud)

与第一个结果相同(它们看起来基本相同).我在一本有效的书中有一个例子(尽管它不是谓词),我不明白其中的区别.X实例化到正确答案[a,b,c,z],与第二个例子有什么不同?

X = [a,b,c|Y], Y = [z].
Run Code Online (Sandbox Code Playgroud)

我错过了什么?谢谢.

prolog difference-lists

14
推荐指数
2
解决办法
5794
查看次数

测试该术语是不同变量的列表

ISO Prolog中用于测试不同变量列表的最紧凑和规范的方法是什么?我们称之为元逻辑谓词is_varset/1.

因此,如果它的参数是一个完全不同的变量列表,它应该会成功.请注意,列表[]的末尾始终包含a .如果变量在最后,我们将其称为部分列表(因此不是列表).如果一个非变量项作为既不是[]也不是变量的后缀出现,那么这既不是部分列表也不是列表.

术语既不是部分列表也不是列表的一个值得注意的特殊情况是无限列表.它们包含至少两个相同的后缀,实际上它们拥有无限的后缀.无限列表超出了标准的范围 - 所有创建它们的尝试都会导致STO统一,其结果是未定义的.尽管如此,有些系统支持它们,因此理想情况下,这些无限列表is_varset/1应该有限地失败.

?- is_varset([A|nonlist]).
false.

?- is_varset([A,B]), is_varset([B,A]).
true.

?- is_varset([A,B,A]).
false.

?- is_varset([A,f(B)]).
false.

?- is_varset([A|_]).
false.

?- L = [_|L], is_varset(L).  % may loop, should rather terminate
false.
Run Code Online (Sandbox Code Playgroud)

以下是ISO/IEC 13211-1:1995中内置插件概述,包括Cor.2:2012.

prolog iso-prolog

14
推荐指数
1
解决办法
317
查看次数

Prolog中的"逻辑纯度"是什么意思?

什么是"逻辑纯度"(在Prolog编程的背景下)?该标记信息说,"使用程序只喇叭条款",但随后又怎么会谓词喜欢if_/3出线,使用因为它切为多,和各种元逻辑(什么是适当的术语?var/1和这样)谓词,即低级别的东西.

我明白它实现了一些"纯粹"的效果,但这究竟是什么意思呢?

有关更具体的说明,请解释如何if_/3符合逻辑纯度,在使用看到,例如在此答案中

logic prolog logical-purity

14
推荐指数
1
解决办法
685
查看次数

列表列表中是否存在元素?

我想查找列表列表中是否存在给定元素.如果元素存在于某处是第一个列表列表,我只会变为真.

有什么建议?

memberlist(X,[[X|T1]|T2]).
memberlist(X,[[H|T1]|T2]) :-
  memberlist(X,[T1|T2]).
Run Code Online (Sandbox Code Playgroud)

list prolog member

14
推荐指数
5
解决办法
1417
查看次数