是否有任何Prolog编译器可以通过针对特定查询进行优化?

时间:2011-03-21 20:08:34

标签: compiler-construction prolog

鉴于Prolog理论和一小组可能的查询,似乎有可能生成所需的搜索树/图,然后将其优化/减少到可以轻松转换为快速程序程序的内容

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

是否有任何Prolog系统或编译器具有此类设施,或者是否有相关论文?

1 个答案:

答案 0 :(得分:3)

我不知道具体是什么,但你要找的是“专业编译器”,“程序专业化”,“语义方向编译”和“部分评估”等术语。在查询中使用和不使用“Prolog”进行尝试;函数式编程社区也对该领域进行了大量研究。

请注意,Prolog是Turing-complete,因此没有一种方法是完美的。有众所周知的Prolog子集,例如Datalog,但那些不包括I / O.我相信Datalog和Shapiro在 Prolog的艺术中描述了Datalog。 (Datalog仍然包含变量,这对于简单的基于流的I / O来说已经足够了。)

如果不起作用,请考虑在cstheory询问。