...
首页> 外文期刊>Theory and Practice of Logic Programming >A treatment of higher-order features in logic programming
【24h】

A treatment of higher-order features in logic programming

机译:逻辑编程中高阶特征的处理

获取原文
获取原文并翻译 | 示例
           

摘要

The logic programming paradigm provides the basis for a new intensional view of higher-order notions. This view is realized primarily by employing the terms of a typed lambda calculus as representational devices and by using a richer form of unification for probing their structures. These additions have important meta-programming applications but they also pose non-trivial implementation problems. One issue concerns the machine representation of lambda terms suitable to their intended use: an adequate encoding must facilitate comparison operations over terms in addition to supporting the usual reduction computation. Another aspect relates to the treatment of a unification operation that has a branching character and that sometimes calls for the delaying of the solution of unification problems. A final issue concerns the execution of goals whose structures become apparent only in the course of computation. These various problems are exposed in this paper and solutions to them are described. A satisfactory representation for lambda terms is developed by exploiting the nameless notation of de Bruijn as well as explicit encodings of substitutions. Special mechanisms are molded into the structure of traditional Prolog implementations to support branching in unification and carrying of unification problems over other computation steps; a premium is placed in this context on exploiting determinism and on emulating usual first-order behaviour. An extended compilation model is presented that treats higher-order unification and also handles dynamically emergent goals. The ideas described here have been employed in the Teyjus implementation of the λProlog language, a fact that is used to obtain a preliminary assessment of their efficacy.
机译:逻辑编程范例为高阶概念的新内涵视图提供了基础。这种观点主要是通过将类型化的λ演算的术语用作代表性的设备并通过使用更丰富的统一形式来探测其结构来实现的。这些添加项具有重要的元编程应用程序,但它们也带来一些不重要的实现问题。一个问题涉及适合其预期用途的lambda项的机器表示:适当的编码除了支持常规归约计算外,还必须促进对项的比较操作。另一个方面涉及对具有分支特性并且有时需要延迟解决统一问题的统一操作的处理。最后一个问题涉及目标的执行,这些目标的结构仅在计算过程中才变得明显。本文讨论了这些各种问题,并描述了解决方案。通过使用de Bruijn的无名符号以及替换的显式编码,开发出了令人满意的lambda术语表示形式。传统的Prolog实现的结构中采用了特殊的机制,以支持统一中的分支以及在其他计算步骤中承载统一问题。在这种情况下,应优先考虑利用确定性和模仿通常的一阶行为。提出了扩展的编译模型,该模型处理高阶统一并处理动态出现的目标。此处描述的思想已在λProlog语言的Teyjus实现中采用,该事实用于对其效果进行初步评估。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号