.NET 的逻辑变量支持 [关闭]
Posted
技术标签:
【中文标题】.NET 的逻辑变量支持 [关闭]【英文标题】:Logic variables support for .NET [closed] 【发布时间】:2011-01-17 19:28:35 【问题描述】:我正在寻找允许我在 F# 中使用逻辑变量的库/程序集。我想避免在实现所需的联合查找数据结构、统一代码等方面重新发明***。
我找到了Prolog.NET,但是手册有点少。我不想要一个成熟的 Prolog 实现,而只想要它对逻辑变量的处理,而手册在这方面有点欠缺。
这是我想要做的:
声明新的逻辑变量 绑定一个log.var。到一个术语(最好图书馆允许完整的 Herbrand 术语) 均衡 log.vars。 (即统一) log.vars 的元处理。 (它是接地的吗?它已被均衡到哪个其他 log.vars?...) 最终,该库甚至支持匹配,即单边统一。有谁知道做这一切的任何库,或者至少可以用作起点的库?
【问题讨论】:
自以下最后一个答案以来,有人知道这方面的任何进展吗? (2010) 【参考方案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 具有与什么兼容的属性你在追求,那么你应该在那里。
【讨论】:
以上是关于.NET 的逻辑变量支持 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章