标签: prolog

在逻辑编程方面,Prolog和miniKanren之间的主要技术差异是什么?

当我想阅读逻辑编程时,我总是偶然发现两种"主要"方式来做到这一点:

我现在感兴趣的是:两者之间的主要技术差异是什么?它们在方法和实现方面是非常相似的,还是采用完全不同的逻辑编程方法?他们来自哪些数学分支,理论基础是什么?

prolog logic-programming minikanren

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

Prolog上的优秀初学者资料

我正在网上和印刷上寻找有关Prolog的优秀初学者资料。我不仅对“学习语言”感兴趣,而且对背景和科学信息也很感兴趣。

artificial-intelligence prolog

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

逻辑编程和函数编程之间的区别

我一直在阅读许多文章试图理解功能和逻辑编程之间的区别,但到目前为止我能够做出的唯一推论是逻辑编程通过数学表达式定义程序.但是这样的事情与逻辑编程无关.

我真的很感激功能和逻辑编程之间的差异.

haskell functional-programming prolog

68
推荐指数
4
解决办法
3万
查看次数

比较SQL和Prolog

我开始学习Prolog并想知道SQL语言的理论差异.

例如:

  • 两者都是声明性语言
  • 都支持事实驱动的知识库
  • 两者都支持问题式数据检索
  • 两者都支持功能依赖

更常见的一点是什么?有什么显着的差异?

sql prolog

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

Haskell与Prolog的比较

在Prolog中比在Haskell中更好地解决了哪些问题?这两种语言之间的主要区别是什么?


编辑

是否有可以模仿Prolog功能的Haskell库(一种逻辑解算器)?

haskell prolog

51
推荐指数
4
解决办法
3万
查看次数

如果在prolog中?

可能是一个愚蠢的问题,但我无法在任何地方找到任何文档.有没有办法在prolog中执行if,例如,如果变量为0,则执行某些操作(将文本写入终端).甚至不需要else,但我找不到if的任何实现.

prolog iso-prolog logical-purity

51
推荐指数
7
解决办法
16万
查看次数

前向链接与后向链接

另一个人没有在实践中有什么好处呢?我理解他们所做的事情,但他们在实际使用中的局限性和能力是什么?我正在考虑Drools vs一个新的AI项目的java prolog,但对其他建议持开放态度.在复杂的关系数据集或替代方案上进行推理有哪些流行的方法?

artificial-intelligence data-modeling drools prolog datalog

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

重新排列variable_names

如何在一个符合标准的方式写入avs_term_rearranged(AVs, T, AVsR)与给定的AVsT,使得AVsR是的置换AVs作为其变量发生在左到右的顺序与布置在相同的顺序中的元素T.

AVs是一个表单元素的列表,A = V其中A一个原子指定一个变量名称,'X'并且V是一个相应的变量.这些列表由read_term/2,3read-option variable_names/1(7.10.3)生成.另外,没有定义元素的精确顺序.

| ?- read_term(T,[variable_names(AVs)]).
A+B+A+_+C.

AVs = ['A'=A,'B'=B,'C'=C]
T = A+B+A+_+C
Run Code Online (Sandbox Code Playgroud)

T是一个包含所有变量AVs加上更多的变量的术语.

请注意,在标准符合程序中,不能依赖变量的术语顺序(7.2.1):

7.2.1变量

如果XY是不相同的变量,则X term_precedes Y应依赖于实现,除了在创建排序列表(7.1.6.5,8.10.3.1 j)期间,排序应保持不变.

注 - 如果XY都是匿名变量,则它们不是相同的术语(见6.1.2 a).

8.4.3.4为例:

sort([f(U),U,U,f(V),f(U),V],L).
   Succeeds, unifying L with [U,V,f(U),f(V)] or
   [V,U,f(V),f(U)].
   [The solution is implementation …
Run Code Online (Sandbox Code Playgroud)

prolog iso-prolog

47
推荐指数
4
解决办法
1305
查看次数

什么是Linux的Prolog IDE?

我需要为一堂课写一些Prolog程序.

有什么建议?

linux ide prolog

43
推荐指数
8
解决办法
3万
查看次数

归因变量:库接口/实现/可移植性

当我撇了一些最近相关的问题,我偶然发现这个答案通过@mat质疑如何在Prolog中表示定向循环图,可直接通往邻居verticies.

到目前为止,我在Prolog中对属性变量的个人经验非常有限.但@mat给出的用例激发了我的兴趣.所以我尝试用它来回答另一个问题,用约束逻辑编程排序列表.

首先,好消息:我第一次使用归因变量就像我想要的那样.

然后,不是那么好的消息:当我通过回答发布时,我意识到在Prolog中有几个API和属性变量的实现.

我觉得我在这里过头了......特别是我想知道以下内容:

  • 什么API广泛使用?到目前为止,我发现了两个:SICStus和SWI.
  • 不同的属性变量实现提供哪些功能?同样的?或者一个包含另一个?
  • 语义上有差异吗?
  • 实际实施怎么样?有些比其他人更有效吗?
  • 可以(或是)使用属性变量进行可移植性问题吗?

很多问号,这里......请分享你的经验/立场?先感谢您!


编辑2015-04-22

这是上面提到的答案的代码片段:

init_att_var(X,Z) :-
    put_attr(Z,value,X).

get_att_value(Var,Value) :-
    get_attr(Var,value,Value).
Run Code Online (Sandbox Code Playgroud)

到目前为止,我"只"使用put_attr/3get_attr/3,但是 - 根据SICStus Prolog文档中的属性变量--- SICStus提供put_attr/2get_attr/2.

因此,即使是非常浅的用例也 需要一些仿真层(一种方式或另一种方式).

prolog

43
推荐指数
4
解决办法
740
查看次数