什么更有趣或更强大:咖喱,水星还是Lambda-Prolog?

时间:2010-06-01 16:11:14

标签: logic prolog logic-programming mercury curry

我想问一下从头开始/逆向工程师实施什么样的正式系统会更有趣。

我查看了一些逻辑/声明性编程系统的现有和开源项目。我决定在空闲时间编写类似的内容,或者至少要了解实现的一般概念。

如果这些系统中的某些系统能够提供逻辑中现代学术研究的大部分表现力和简洁性及其与计算模型的关系,那将是很好的。

您建议至少在概念层面学习什么?例如,Lambda-Prolog很有意思,因为它允许更高阶的关系,但AFAIK基于直觉主义逻辑,因此缺乏排除中间原则;这通常对我不利。

我也欢迎任何关于现代逻辑编程系统的建议,这些系统不那么受欢迎,但更具表现力/更强大。

4 个答案:

答案 0 :(得分:16)

Prolog是第一种改变我对编程观点的语言。但后来我发现它不是那么高级,我想看到它。

库里 - 我只尝试过Munster CC,发现它有点不方便。实际上,在这一点上,我决定不再忽视Haskell。

水星有许多我想在Prolog中看到的东西。我对区分规则模式的可能性抱有很好的期望。用Mercury编写的程序应该激发编译器做很多优化(我猜)。

答案 1 :(得分:9)

Twelf

它显着地概括了lambda-prolog,它是一个逻辑框架和金属框架以及逻辑编程语言。如果你需要一种重点关注逻辑和计算的语言,那就是我所知道的最好的。

答案 2 :(得分:4)

如果我尝试扩展基于逻辑的系统,我会选择Prolog Cafe,因为它很小,开源,符合标准,并且可以轻松集成到基于java的系统中。

答案 3 :(得分:2)

对于我参加的编程语言课程的最终项目,我们必须使用continuation和宏在Scheme中嵌入Prolog评估器。最终的结果是你可以自由地混合Scheme和Prolog代码,甚至可以将用Scheme编写的任意谓词传递给Prolog引擎。

这是一项非常有益的练习。前12行代码(andor)花了大约6个小时来编写并获得正确的代码。它几乎是搜索逻辑,使用continuation非常简洁地编写。其余的更容易接受。然后,一旦我添加了统一算法,它就完成了。