如何解决扩展统一的SICStus风格 Module:verify_attributes(-Var, +Value, -Goals)钩子
我想了解SICStus风格的可扩展统一。
User's Manual on library(atts)
指出:
Module:verify_attributes(-Var,+Value,-Goals)
钩子
...
verify_attributes/3
可以调用任意Prolog目标,但是Var
不应受其约束。绑定Var
将导致未定义的行为。
...
如果单个统一绑定多个属性变量,则首先所有此类绑定撤消,然后对每个相关变量执行以下操作:
到目前为止,我对以上内容提出了以下解释:
-
钩在
verify_attribute/3
上的不同Var
处理程序中,看到的状态与Var
相同:所有人都将其视为“ pre_unify”。 -
verify_attribute/3
不能绑定Var
,但可以绑定 other 属性变量。 -
这些绑定也将被延迟,以使处理程序不仅看到
Var
的相同状态,而且看到所有的状态涉及的变量。动作列表上方包含“ 5.强制延迟属性变量的任何绑定。”
我朝着正确的方向前进吗-这是完成,然后撤消,然后重做的全部内容吗? 请帮助!
解决方法
该机制最初由Christian Holzbaur设计,并由您真正实施。回覆。您的解释:
钩在
verify_attribute/3
上的不同Var
处理程序中,看到的是相同的 状态为Var:所有人都将其视为“ pre_unify”。
对。
verify_attribute/3
不能绑定Var
,但可以绑定其他 属性变量。
对。
这些绑定也将被延迟,以便处理程序不仅 看到
Var
的相同状态,但是涉及到的所有属性变量。
错了。如果它绑定了其他属性变量,则对这些变量递归调用整个扩展的统一机制。
在上述动作列表中,需要“ 5.强制对 属性变量。”
错。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。