Prolog中的惰性流编程

保罗塔劳
Wielemaker公司
汤姆施里杰弗斯

近年来,流处理已成为增量处理大量数据的一种重要方法,并在许多编程语言中提供了特殊支持和库。不幸的是,Prolog目前还缺乏支持,大多数现有的方法都是临时的。为了纠正这种情况,我们将延迟流生成器作为一个统一的Prolog接口,用于对通过I/O和/或算法增量生成的有限和无限数据序列进行状态计算。

我们以两种方式向应用程序程序员公开流生成器:1)通过抽象序列操作API,方便定义自定义生成器;2)作为惯用惰性列表,与许多现有列表谓词兼容。我们定义了一个流生成器操作代数,该代数通过嵌入式语言解释器扩展Prolog,为组成生成器提供了一个紧凑的符号,并支持在两个同构表示之间移动。

作为一个特殊的例子,我们引入了应答流生成器,它封装了协同处理一级逻辑引擎的工作,并支持前向递归and流和回溯生成的OR流之间的互操作。

关键词:惰性流生成器、惰性列表、一级逻辑引擎、流组合器、AND-stream/OR-stream互操作、Prolog扩展

在巴特·博加特(Bart Bogaerts)、埃斯拉·埃尔登(Esra Erdem)、保罗·福多尔(Paul Fodor)、安德烈亚·福米萨诺(Andrea Formisano)、乔瓦姆巴蒂斯塔·伊安尼(Giovambattista Ianni)、丹妮拉·伊莱赞(Daniela Inclezan)、德文维达尔(Ge第35届国际会议记录逻辑程序设计(技术通信) (ICLP 2019),2019年9月20日至25日,美国新墨西哥州拉斯克鲁斯,理论计算机科学中的电子论文集306,第224-237页。
发布日期:2019年9月19日。

阿尔西维德地点:https://dx.doi.org/10.4204/EPTCS.306.26 围巾 PDF格式
中的引用重建bibtex,XML格式HTML格式格式(近似值)。
评论和问题: eptcs@eptcs.org
对于网站问题: 网站管理员@eptcs.org