近年来,流处理已成为增量处理大量数据的一种重要方法,并在许多编程语言中提供了特殊支持和库。不幸的是,Prolog目前还缺乏支持,大多数现有的方法都是临时的。为了纠正这种情况,我们将延迟流生成器作为一个统一的Prolog接口,用于对通过I/O和/或算法增量生成的有限和无限数据序列进行状态计算。 我们以两种方式向应用程序程序员公开流生成器:1)通过抽象序列操作API,方便定义自定义生成器;2)作为惯用惰性列表,与许多现有列表谓词兼容。我们定义了一个流生成器操作代数,该代数通过嵌入式语言解释器扩展Prolog,为组成生成器提供了一个紧凑的符号,并支持在两个同构表示之间移动。 作为一个特殊的例子,我们引入了应答流生成器,它封装了协同处理一级逻辑引擎的工作,并支持前向递归and流和回溯生成的OR流之间的互操作。 关键词:惰性流生成器、惰性列表、一级逻辑引擎、流组合器、AND-stream/OR-stream互操作、Prolog扩展 |