有没有可以针对特定查询进行优化的 Prolog 编译器?

问题描述 投票:0回答:1

给定 Prolog 理论和一小组可能的查询,似乎有可能生成所需的搜索树/图,然后将其优化/简化为可以轻松转换为快速过程程序的东西。

显然,一旦以这种方式编译,就会失去对 Prolog 数据库发出一般查询的能力。 Prolog 理论还必须包括某种 I/O,否则缩减将只留下静态结果集。

是否有任何 Prolog 系统或编译器具有此类功能,或者是否有关于该主题的相关论文?

prolog
1个回答
3
投票

我不知道任何具体的术语,但您正在寻找诸如“专门化编译器”、“程序专门化”、“语义方向编译”和“部分评估”等术语。在查询中尝试使用或不使用“Prolog”;函数式编程社区也在这个领域做了很多研究。

请注意,Prolog 是图灵完备的,因此没有一种方法是完美的。 Prolog 有一些众所周知的子集,例如 Datalog,但它们不包括 I/O。我相信 Sterling 和 Shapiro 在《The Art of Prolog》中描述了 Datalog。 (数据记录仍然包含变量,这对于简单的、基于流的 I/O 来说已经足够了。) 如果这不起作用,请考虑在

cstheory

询问。

© www.soinside.com 2019 - 2024. All rights reserved.