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

10 logic clojure prolog minikanren

社区维基

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

上下文

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

  • 逻辑编程非常有趣.
  • 逻辑编程有时是违反直觉的
  • 逻辑编程通常"低效"(或者至少是我编写的代码).

    好像从此开始

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

题:

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

谢谢!

Joo*_*kka 5

约束逻辑编程对于解决各种调度,资源分配和其他非平凡约束满足/组合优化问题非常有用.你只需要声明:约束(例如,一次只有一架飞机可以在跑道上),也许你想要最小化/最大化(吞吐量/等待).

Prolog中有各种众所周知的风格,包括在有限整数域中工作的CLP(FD)和在实域中工作的CLP(R).至少CLP(FD)似乎是core.logic的直接路线图.

我相信这些Prolog衍生的解决方案正在积极地用于空中交通管制和其他物流任务,尽管很难准确了解哪些技术正是这些任务和生命关键公司正在使用的.