核心.logic占主导地位的竞技场[软]

时间:2012-06-02 00:55:26

标签: clojure prolog logic minikanren

社区维基

我不关心声望点,我只想要好的答案。随意将此问题称为社区维基。

上下文

我一直在通过The Reasoned Schemer工作,并且发现了以下观察结果:

  • 逻辑编程非常有趣。
  • 逻辑编程有时会违反直觉
  • 逻辑编程通常“效率低下”(或者至少是我编写的代码)。

    似乎从

  • 开始
  • 装配 - > C ++,我“放弃”控制编写我自己的机器代码
  • C ++ - > Clojure,我放弃了对内存管理的控制
  • Clojure - > core.logic / prolog / minikanren,我失去了对计算完成方式的部分控制

问题:

除了(1)解决逻辑谜题和(2)类型推断之外,逻辑编程主导的问题领域是什么?

谢谢!

2 个答案:

答案 0 :(得分:5)

Constraint logic programming对于解决各种调度,资源分配和其他非平凡约束满足/组合优化问题非常有用。您所拥有的只是声明性的:约束(例如,一次只有一架飞机可以在跑道上),也许您希望最小化/最大化(吞吐量/等待)。

Prolog中有各种众所周知的风格,包括CLP(FD),它在有限整数域中运行,而CLP(R)在实际域中运行。至少CLP(FD)似乎在core.logic's immediate roadmap

我相信这些Prolog派生的解决方案正在air traffic control和其他物流任务中得到广泛应用,尽管很难准确了解这些任务和生命关键公司正在使用的技术。< / p>

答案 1 :(得分:3)

人工智能研究,特别是认知机器人和基于逻辑的知识表示的其他应用,是Prolog被广泛用于与逻辑理论密切相关的领域。这种关系非常有用,因为它基本上将理论付诸实践。定理可以在纸上证明,然后在prolog中执行并执行,执行程序具有经过验证的属性。这允许程序“构造正确”,这与首先编写程序相反,然后试图证明它们的属性(正如在形式方法中所做的那样,使用例如模型检查)。

语义网是逻辑编程发挥越来越重要作用的另一个地方。