我正在寻找一个允许我在F#中使用逻辑变量的库/程序集。我想避免在实现所需的union-find数据结构,统一代码等方面重新发明轮子。
我找到Prolog.NET,但手册有点稀疏。我不想要一个完整的Prolog实现,但只有它对逻辑变量和手册的处理在这方面是缺乏的。
以下是我希望能够做到的事情:
有没有人知道任何完成所有这些工作的库,或者至少可以用作起点的库?
答案 0 :(得分:4)
我在F#中有一个基本的逻辑编程嵌入。我为我编写的“编程范式”课程开发了它,它使用了F#,并包含了几个关于逻辑编程的讲座。
代码使用命令式更新来反映由于统一而导致的替换,并且它使用成功延续。因此它与例如Kanren相比有所不同。
我不确定这些音符本身有多大意义,但您可以在以下结尾处找到此嵌入: http://undergraduate.csse.uwa.edu.au/units/CITS3242/16-logic-prog.pdf
我可以根据要求提供此嵌入的精炼版本。
答案 1 :(得分:3)
我不知道图书馆随便做了你想做的事。但是,我确实在this blog entry中实现了“F#中的union-find”。从大学时代开始,我似乎回想起一些关于Scheme的流行书,其中有一个基本的统一算法,我曾经用它来编写一个“迷你序幕”实现。因此,我觉得这是一个有正确经验的人可以在周末聚会,以防有人在那里寻找项目。 (也许我会将它添加到我自己的周末TODO列表中。)
答案 2 :(得分:2)
Mini-Kanren已经implemented for Scala。我不是.NET程序员,也不能说这对你有多大帮助,但是Mini-Kanren在编程逻辑变量语言方面符合你的要求:如果.NET中的Scala嵌入具有与什么兼容的属性你在追求,那么你应该在那里。