如何为实现mutable term的Prolog系统定义统一操作的合规错误术语?
SICStus Prolog提供了名为**可变项(mutable term)**的抽象数据类型,用于高效的可回溯破坏性赋值。其文档明确指出:
请注意: 统一两个mutables的效果是未定义的。
现在需要为另一个拟实现可变项的Prolog系统,通过catch/throw错误机制定义该操作的错误效果,核心问题是:依据ISO/IEC 13211-1:1995标准,选择合适的错误项是什么?
根据该标准的7.12.2 错误分类:
e) 当不允许执行特定操作时,应触发Permission Error。其形式为
permission_error(Operation, PermissionType, Culprit),其中Operation∈ {access,create,input,modify,open,output,reposition}
且PermissionType∈ {binary_stream,flag,operator,past_end_of_stream,private_procedure,static_procedure,source_sink,stream,text_stream}
且Culprit是导致错误的参数或其组件之一。
[...]
j) 执行的任何阶段都可能触发System Error,触发条件及后续操作由实现决定,形式为system_error。
system_error虽可作为备选方案,但permission_error显然更贴合这类"操作不被允许"的场景。那么permission_error(modify,mutable_term,(=)/2)是否符合标准合规要求?
内容的提问来源于stack exchange,提问作者repeat

