SICStus-Prolog中的current_谓词
SICStus Prolog提供了当前谓词/1和当前谓词/2 各国: 当前谓词(?PredSpec) 将PredSpec与形式为Name/Arity的谓词规范统一起来 当前谓词(?名称,?术语) 将名称与用户定义谓词的名称统一,并将术语与对应于该谓词的最通用术语统一 它们似乎具有相同的特征: 这两个谓词都用于枚举谓词,都用于模块 手册页面注释: 当前谓词/1是ISO Prolog标准的一部分;当前的_谓词/2不可用SICStus-Prolog中的current_谓词,prolog,iso-prolog,sicstus-prolog,Prolog,Iso Prolog,Sicstus Prolog,SICStus Prolog提供了当前谓词/1和当前谓词/2 各国: 当前谓词(?PredSpec) 将PredSpec与形式为Name/Arity的谓词规范统一起来 当前谓词(?名称,?术语) 将名称与用户定义谓词的名称统一,并将术语与对应于该谓词的最通用术语统一 它们似乎具有相同的特征: 这两个谓词都用于枚举谓词,都用于模块 手册页面注释: 当前谓词/1是ISO Prolog标准的一部分;当前的_谓词/2不可用 我是否应该在新(=非遗留)代码中使用当前谓词/2 current\u predi
我是否应该在新(=非遗留)代码中使用
当前谓词/2
current\u predicate/2
的好处是,与current\u predicate/1
不同,如果定义了谓词,则允许使用谓词调用模板进行查询。例如
...,
( current_predicate(_, foo(_, _)) ->
foo(A, B)
; ...
),
...
但您通常可以使用标准的predicate\u属性/2
谓词,它将模板作为第一个参数
另外,如果Logtalk linter发现您正在调用当前谓词/2
:-),它会向您尖叫(并建议一个更标准的替代方案)