cost 92 ms
全局启用发生检查时,Prolog 是否需要 GC? - Does Prolog need GC when the occurs check is globally enabled?

据我所知,通过健全的统一,SLD 解析不应该创建循环数据结构(这是正确的吗?) 如果是这样,理论上可以以不需要垃圾收集 (GC) 的方式实现 Prolog。 但话又说回来,一个人可能不会。 对于基于 WAM 的 Prolog 实现来说,这是真的吗? SWI-Prolog 是这样吗? ...

WAM 中的扁平形式 - Flattened form in WAM

WAM:A Tutorial Reconstruction 指出需要使用以下原则扁平化查询 p(Z, h(Z,W), f(W)): 话虽如此,查询扁平形式是: 我对外部变量的定义迷失了,请考虑以下几点: Y 是外部变量吗? 这个扁平化的形式应该如何? 根据我的理解,这将是构造: ...

WAM Prolog 有符号表吗? - Does WAM Prolog have a Symbol Table?

我正在尝试用 C 编写 Prolog 的 WAM 实现。我注意到 Prolog 数据类型仅以四种标记类型进行描述:REF、STR、CON 和 LIS。 执行堆中的每个单元格都包含令牌的类型及其在堆中的位置。 请注意,没有对其实际名称(即 Z、W)的任何引用。 堆不应该指向符号表中的符号及其值 ...

生成L0程序项的WAM代码的正确顺序是什么? - Which is the correct order to generate WAM code for L0 program terms?

在HassanAït-Kaci的“ Warren的抽象机:教程重构”第2.2节中,L0查询的编译顺序非常清楚:必须使用从左到右的广度优先搜索来分配寄存器,并且必须使用从左到右的宽度生成代码。从右到后的深度优先搜索。 在第2.3节中,(L0程序的)寄存器分配顺序是明确的:从左到右的宽度优先搜 ...

沃伦的抽象机程序指令何时执行? - When Warren's Abstract Machine program instructions are executed?

我正在阅读HassanAït-Kaci的“沃伦的抽象机器:教程的重构” 。 在第2章中,将在编译L0查询之后介绍L0程序的编译。 程序编译部分(2.3)开头为: 编译程序项p有点棘手,尽管不是很多。 观察到它假设一个查询?- -q将在堆上建立一个术语并将寄存器X1设置为包含其 ...

在沃伦的抽象机中,如果参数之一是寄存器,则绑定如何工作? - In a Warren's Abstract Machine, how does bind work, if one of the arguments is a register?

我正在尝试创建自己的WAM实施,并且坚持练习2.4 我不明白如何执行图2.4中的指令unify_value X4 。 据我了解,该指令应将程序中的Y与查询中的f(W)统一起来。 unify_value X4调用unify (X4,S) ,其中S = 2(参见图2.1),对应的堆 ...

用于执行Prolog的抽象机器的比较 - Comparision of abstract machines for execution of Prolog

我正在寻找研究论文或任何其他出版物,比较不同的抽象机器(不止一个)执行Prolog与不基于抽象机器的prolog解释器。 到目前为止我所看到的是,大多数实现似乎都是基于Warren Abstract Machine的prolog解释器,尽管提出了其他抽象机器(例如维也纳抽象机 , 面向树的抽象 ...

WAM(沃伦抽象机)中的统一算法示例 - Unification algorithm example in WAM (Warren's Abstract Machine)

沃伦抽象机器中的练习2.2 :教程重构 要求提供术语f(X,g(X,a))和f(b,Y)的表示形式,然后对这些术语的地址进行统一(分别表示为a1和a2)。 我为这些术语构造了堆表示形式,它们如下: 现在我被要求跟踪unify(a1,a2),但是按照第20页的算法在1中我得到: ...

在沃伦的抽象机中,参数变量是在哪里创建的? - In a Warren's Abstract Machine, where are Argument Variables created?

我试图创建自己的WAM实现,并使用“ Warren的抽象机:教程重构” 图2.10中的说明作为测试用例。 但是,我需要将A1和A2传递给get_structure 。 但是两个变量都在哪里创建的? put_value和put_variable都创建A变量,但指令中均未列出。 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM