文件说
copy_term(+Term, -Copy, -Body)
制作一个副本,Term
其中所有变量都已被新变量替换,这些新变量在新创建的术语之外无处出现。如果Term
包含属性变量,Body
则与一个术语统一,以便执行Body
将恢复 中变量的等效属性Copy
。
我之前确认了对某些变量的数值 CLP(R) 约束,并且在某些时候我使用 copy_term/3 收集这些约束。后来,当我尝试使用'call(Body)'恢复约束时,我在表单的参数中得到一个“实例化错误”[nfr:resubmit_eq(...)]
这是一个演示问题的简化示例:
:-use_module(library(clpr)).
{Old>=0, A>=0,A=<10, NR= Old+Z, Z=Old*(A/D)}, copy_term(Old,New,CTR), call(CTR).
结果是:
Instantiation error in argument 1 of '.'/2
! goal: [nfr:resubmit_eq([v(-1.0,[_90^ -1,_95^1,_100^1]),v(1.0,[_113^1])])]
我的问题是:如何恢复Body
over的约束New
?我一直找不到具体的例子。