【问题标题】:Logic variables support for .NET [closed].NET 的逻辑变量支持 [关闭]
【发布时间】:2011-01-17 19:28:35
【问题描述】:

我正在寻找允许我在 F# 中使用逻辑变量的库/程序集。我想避免在实现所需的联合查找数据结构、统一代码等方面重新发明轮子。

我找到了Prolog.NET,但是手册有点少。我不想要一个成熟的 Prolog 实现,而只想要它对逻辑变量的处理,而手册在这方面有点欠缺。

这是我想要做的:

  • 声明新的逻辑变量
  • 绑定一个log.var。到一个术语(最好图书馆允许完整的 Herbrand 术语)
  • 均衡 log.vars。 (即统一)
  • log.vars 的元处理。 (它是接地的吗?它已被均衡到哪个其他 log.vars?...)
  • 最终,该库甚至支持匹配,即单边统一。

有谁知道做这一切的任何库,或者至少可以用作起点的库?

【问题讨论】:

  • 自以下最后一个答案以来,有人知道这方面的任何进展吗? (2010)

标签: .net f# logic logic-programming


【解决方案1】:

我在 F# 中嵌入了基本的逻辑编程。我为我教授的“编程范式”课程开发了它,该课程自始至终使用 F#,并包括几节关于逻辑编程的讲座。

代码使用命令式更新来反映由于统一导致的替换,并使用成功延续。所以它与例如 Kanren 相对不同。

我不确定这些笔记本身会有多大意义,但您可以在结尾处找到这个嵌入: http://undergraduate.csse.uwa.edu.au/units/CITS3242/16-logic-prog.pdf

我可以根据要求提供此嵌入的改进版本。

【讨论】:

    【解决方案2】:

    我不知道有什么图书馆可以随心所欲地做你想做的事。但是,我确实在this blog entry 中实现了“F# 中的联合查找”。从我大学时代开始,我似乎记得一些关于 Scheme 的流行书籍中有一个基本的统一算法,我曾经用它来编写一个“迷你序言”实现。所以我觉得这是一个有合适经验的人可以在一个周末完成的事情,以防有人正在寻找一个项目。 (也许我会将它添加到我自己的周末 TODO 列表中。)

    【讨论】:

    • 也许你在想理性计划者?它定义了一个称为 mini-kanren 的 DSL,它与 Scheme 集成得很好,翻译成 F# 应该不难。
    • 没关系。但正如我上面所说,我正在寻找现有的代码。并不是说我无法自己实现所有这些,但如果其他人已经完成了这项工作,那将是浪费时间。
    【解决方案3】:

    Mini-Kanren 一直是implemented for Scala。我不是 .NET 程序员,不能说这对你有多大用处,但 Mini-Kanren 在编程逻辑变量语言方面符合你的要求:如果 .NET 中嵌入的 Scala 具有与什么兼容的属性你在追求,那么你应该在那里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 2011-10-25
      • 1970-01-01
      • 2021-01-21
      相关资源
      最近更新 更多