21

我想问你从头开始/逆向工程实现什么正式系统会更有趣。

我浏览了一些现有的和开源的逻辑/声明式编程系统项目。我决定在空闲时间编造一些类似的东西,或者至少要掌握实施的总体思路。

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

你会建议至少在概念层面学习什么?例如,Lambda-Prolog 很有趣,特别是因为它允许更高阶的关系,但 AFAIK 是基于直觉主义逻辑的,因此缺乏排中原则;这对我来说通常是一个缺点。

我也欢迎任何关于不太流行但更具表现力/功能强大的现代逻辑编程系统的建议。

4

4 回答 4

18

Prolog 是第一种改变我对编程的看法的语言。但是后来我发现它并没有我想看到的那么高级。

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

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

于 2010-06-02T09:30:40.190 回答
10

十二

它对 lambda-prolog 进行了显着的概括,它是一个逻辑框架和元逻辑框架,也是一种逻辑编程语言。如果您需要一种高度关注逻辑和计算的语言,那么这是我所知道的最好的语言。

于 2010-07-30T09:30:20.607 回答
4

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

于 2010-07-18T22:57:55.180 回答
2

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

这是一个非常有启发性的练习。前 12 行代码 (andor) 实际上花了大约 6 个小时来编写并得到正确。这几乎是搜索逻辑,使用延续非常简洁地编写。其余的更容易一些。然后,一旦我添加了统一算法,一切就都奏效了。

于 2010-06-04T19:50:44.970 回答