问题标签 [logic-programming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1119 浏览

logic - 关于逻辑和库里-霍华德对应关系的问题

您能否解释一下逻辑编程的基础与类型系统和常规逻辑之间的句法相似现象之间的基本联系是什么?

0 投票
1 回答
431 浏览

logic - 关系从句逻辑问题:什么是 Herbrand 解释

我很难掌握关系从句逻辑,我不确定这是否是要问的地方,但如果有人能就以下问题提供指导,那将对我的修改有很大帮助。

设 P 为程序:

问题:P 的 Herbrand 解释是什么?

0 投票
4 回答
3605 浏览

prolog - 哪个更有趣或更强大:Curry、Mercury 或 Lambda-Prolog?

我想问你从头开始/逆向工程实现什么正式系统会更有趣。

我浏览了一些现有的和开源的逻辑/声明式编程系统项目。我决定在空闲时间编造一些类似的东西,或者至少要掌握实施的总体思路。

如果其中一些系统能够提供现代学术研究逻辑及其与计算模型的关系的大部分表达能力和简洁性,那就太好了。

你会建议至少在概念层面学习什么?例如,Lambda-Prolog 很有趣,特别是因为它允许更高阶的关系,但 AFAIK 是基于直觉主义逻辑的,因此缺乏排中原则;这对我来说通常是一个缺点。

我也欢迎任何关于不太流行但更具表现力/功能强大的现代逻辑编程系统的建议。

0 投票
4 回答
509 浏览

functional-programming - 这种声明式 I/O 方法有什么问题(如果有的话)

我不确定这到底有多少属于“编程”而不是“程序语言设计”。但问题是这样的:

说,为了简单起见,我们有两个“特殊”列表/数组/向量/为了简单起见,我们只是称为“端口”,一个称为“端口”,另一个称为“端口stdInstdOut。这些在概念上分别代表

  • 在程序执行期间给予程序的所有用户输入
  • 在程序执行期间写入终端的所有输出

在受 Haskell 启发的伪代码中,应该可以创建这个完全声明性的程序:

哪个会达到预期,要求两个数字,然后打印他们的产品。诀窍在于 stdOut 表示程序完成时写入终端的字符串列表,而 stdIn 表示输入字符串列表。类型错误以及需要采取一些保护措施才能在输入新行后仅打印下一行的事实为了简单起见将其放在一边,解决这个问题可能很容易。

那么,在我开始实施这个想法之前,有没有我忽略的陷阱?我不知道已经存在类似的构造,因此不考虑我忽略的明显陷阱是天真的。

否则,我当然知道:

如果这些结果需要以与上述类似的方式交织在一起,那将是一个错误。

0 投票
0 回答
905 浏览

prolog - 如何用 Prolog 解决这个逻辑描述?

这是我的第一个问题,所以请宽容。

我在 prolog/CLP 中编写逻辑问题:

“众所周知,只有一个角色在说真话。April
先生说 May 先生说谎。May
先生说 June 先生说谎。June
先生说 April 先生和 May 先生都说谎。
编写一个程序来确定谁在说谎。真相。”

我在纸上解决问题,解决方案是梅先生说实话。

但是如何在prolog中编写呢?我可能找到了类似的解决方案:WHO KILL - Similar solution

但我不明白。有人可以知道如何做到这一点或有另一个例子吗?

如果可以的话请帮忙:):):)

0 投票
3 回答
298 浏览

prolog - 帮助prolog的子句

我面临的问题是由于某些(可能很明显)原因,Prolog 不接受上述代码的最后一行。原因与以下有关:

如果我尝试

它行为正确。

问题是什么?我试图说明,如果同时发射 alpha 和 beta,那么就会同时检测到质子和电子。

谢谢

0 投票
5 回答
5174 浏览

iphone - 在 iPhone 上执行序言代码

我目前需要在我正在制作的应用程序中执行序言代码。我知道 Apple 可能永远不会在 App Store 中允许这样的事情,但这也不是本意。这更像是一个永远不会到达 App Store 的私人项目。

目的

在这种情况下,prolog 用于描述对象(例如电话)及其属性。该对象将使用 OpenGL 使用 prolog 脚本中指定的坐标进行绘制。使用 prolog 的原因是我需要能够向程序查询该对象具有的某些功能,而 prolog 大大简化了这一点。底线:我“需要”从我的应用程序中查询序言脚本。

可能的解决方案

  • 嵌入一​​个已经存在的用 C 编写的实现。我不确定这是否可行。
  • 在另一台机器上执行prolog代码,使用网络查询prolog。
  • 似乎可以在应用程序内运行某种 Ruby VM(据我了解,shinycocos 使用它),这可以用来运行其中一个 Ruby Prolog 实现吗?
  • 寻找 Prolog 的替代品。这需要给我一些与 prolog 相同的可能性。

可悲的是,谷歌几乎没有给我任何结果,所以我觉得我可能在这个项目上很孤单。如果有人有任何经验或线索,我将非常感激。

0 投票
2 回答
14365 浏览

prolog - Datalog vs CLIPS vs Prolog

和很多程序员一样,我在大学里学过 Prolog,但很少。我知道Prolog和Datalog密切相关,但Datalog更简单?另外,我相信我读到 Datalog 不依赖于逻辑子句的顺序,但我不确定为什么这是优势。CLIPS 应该是完全不同的,但它太微妙了,我无法理解。有人可以提供这些语言相对于其他语言的一般亮点吗?

0 投票
1 回答
435 浏览

sicp - 追加到表单是如何工作的?(SICP关于逻辑编程的部分)

我目前正在研究 SICP 关于逻辑编程的部分,但我陷入了有关逻辑推导的示例中,尤其是附加到表单规则。它们是如何工作的?我不太明白的是第二条规则如何 cdr-downs 第一个列表。例如,给定:

(规则(附加到表单()?y?y))

(规则(附加到表单 (?u . ?v) ?y (?u . ?z))(附加到表单 ?v ?y ?z))

a) 我们如何到达:

b) 这个呢:

c) 最后:

我会对执行规则匹配所需的具体心理步骤感兴趣。

先感谢您。

0 投票
3 回答
1721 浏览

prolog - 在 prolog 中定义多个规则的最短方法

我正在尝试解决一个练习,以便更熟悉序言。

任务如下:

我已经解决了那个练习,但我猜有点笨重。我的代码是:

有人可以建议一种更好的方法来初始化这些规则吗?例如在 Haskell 中,我可以这样做:

提前致谢。