比 Prolog 更新的逻辑编程语言是什么?

20

有没有比Prolog更专门用于逻辑编程的新语言?


1
维基百科有一个逻辑编程语言列表:https://en.wikipedia.org/wiki/Category:Logic_programming_languages - Anderson Green
6个回答

10

Mercury很不错,现代化,类似于Prolog。

Mercury是一种新的逻辑/函数式编程语言,它将声明式编程的清晰性和表达能力与先进的静态分析和错误检测功能相结合。其高度优化的执行算法提供了远远超过现有逻辑编程系统的效率,并接近传统编程系统。Mercury解决了大规模程序开发的问题,允许模块化、分离编译和众多的优化/时间权衡。


1
我还想提出 Mercury 作为一种非常好的逻辑编程语言。请注意,虽然 Mercury 的语法可能看起来像 Prolog,但由于其强类型系统,它更像是在 Haskell 中进行编程。此外,如果您需要一些典型的 Prolog 特性,如逻辑变量,则 Mercury 不支持它们。实际上,避免使用它们将使您的程序更易于维护 :-).免责声明:我参与了 Mercury 项目,关于代码可维护性的观察是主观和个人经验。其他评论是客观的。 - Paul Bone
2
缺乏逻辑变量似乎是一个很大的劣势。这不是Prolog/LP的一个非常核心的方面吗? - ib84

6

有一种非常有前途的函数逻辑编程语言叫做Curry。尽管它很新,但如果你已经了解Haskell和Prolog,那么应该很容易上手Curry,因为它直接受到这两种语言的影响。

Curry以无缝的方式结合了函数式编程(嵌套表达式、高阶函数、惰性求值)、逻辑编程(逻辑变量、部分数据结构、内置搜索)和并发编程(对逻辑变量进行同步的表达式并发评估)的特点。


4

请不要忘记,Prolog是许多新扩展的主机,可以被视为自己的语言。特别是约束语言,如CLP(R)、CLP(Q)、CLP(FD)。更一般的扩展,如CHR,但也有许多类型的方法。

这些语言通常作为现有Prolog系统中的库来发布。在这种环境中,您得到的往往是比从头开始系统提供的成熟和稳定的实现。毕竟,许多Prolog系统已经接近30年了。


4

Logtalk 是一种面向对象的逻辑编程语言,它扩展并利用了 Prolog 语言的特性,具有适合大型编程的功能集,专注于代码封装和重用机制。它高度可移植,支持作为后端编译器使用最活跃的 Prolog 实现。其他值得注意的功能包括支持原型和类、协议(接口)、共归、基于组件的编程、事件驱动编程和高级多线程编程。当前发行版包括大量的编程示例、编程工具、库以及文本编辑器和语法高亮器,支持编程和发布源代码。


4

Oz/Mozart 是一种多范式编程语言,支持逻辑编程作为其特性之一。我从未使用过它,所以无法说它是否好用。但它肯定是很有趣的。

免责声明:我在 Mercury 项目上工作,如果需要在 Oz/Mozart 和 Mercury 之间做出选择,我会选择 Mercury。


2

其他回答中没有提到Picat:

Picat是一种简单而强大的基于逻辑的多范式编程语言,旨在用于通用应用程序。 Picat是一种基于规则的语言,其中谓词、函数和演员都是通过模式匹配规则来定义的。 Picat包含许多声明性语言特性,以提高软件开发的生产力,包括显式非确定性、显式统一、函数、列表推导、约束和表格化。 Picat还提供了命令式语言结构,如赋值和循环,用于编程日常事物。基于良好设计的虚拟机并集成了垃圾收集和扩展栈和数据区域的内存管理器的Picat实现是高效且可扩展的。 Picat不仅可以用于符号计算,这是声明性语言的传统应用领域,而且还可以用于脚本编写和建模任务。

Picat看起来有些类似于Prolog,但Picat是一种多范式语言:

import util.

input_data(Tri) => 
    Lines = read_file_lines("triangle.txt"),
    Tri = new_array(Lines.length),
    I = 1,
    foreach(Line in Lines)
        Tri[I] = Line.split().map(to_integer).to_array(),
    I := I+1
    end.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接