Java中有'logic programming'的元素吗?

Are there elements of 'logic programming' in Java?

近年来,'functional programming' 的许多元素已进入 Java,特别是 Java 8. 我想到了 lambda 表达式、函数式接口、Java泛型、Stream 接口、Optional-class 和类似的。

我的问题是,是否有任何新的 classes/interfaces/syntaxes 添加到 Java 并源自 'logic programming' 的范例?或者是否有这样做的计划?

(参见 here 两种方法的比较)

Java 支持 predicates,接受参数的函数接口和 return true 或 false 取决于参数是否使谓词的条件为真或假。这类似于您链接的问题中提到的 Prolog 谓词。

逻辑编程语言(例如 Prolog)允许将程序编写为真理的陈述和它们之间的关系,因此该语言的实现本质上是一种算法,它搜索满足程序所有声明的解决方案声明。

因此,Java 要支持“开箱即用”的逻辑编程,标准库必须包含这样的搜索算法。据我所知,事实并非如此。但是,有第三方库可以; Google 同样搜索 'Java logic programming library' yields several (constraint programming libraries。)

这些库通常将语句和关系表示为 Java 对象,并包括算法的实现(或可能的几种算法以供选择)以搜索解决方案。鉴于这些库的可用性、复杂性和多样性,似乎不太可能将等效的东西添加到 Java 标准库中。