我从网上免费课程中解决了这个问题,我不知道从哪里开始我甚至无法理解这个谓词的作用......
写谓词
replace_var_args (Term, Values, NewTerm)
这是真的 如果它取代Term
的条款,这些条款是变量的值 列表«值»。也就是说,Term
的第一个变量被替换为 列表Values
的第一项,Term
的第二个变量是 由列表Values
的第二个术语替换,依此类推,直到列表为止Values
变空。最后,它返回新术语NewTerm
。 使用内置谓词,例如functor/3
,=../2
,var/1
,nanvar/1
, 等目标的例子,a) ?- replace_var_args(father(yannis,X), [anna], NewTerm). NewTerm = father(yannis,anna), b) ?- replace_var_args(f(a,X,g(b), Y,h(a,Z)), [b,c], NewTerm). NewTerm = f(a,b,g(b),c,h(a,Z)), c) ?- replace_var_args(f(a,X,f(b),Y,h(a,Z)), [b,c,d], NewTerm). NewTerm = f(a,b,g(b),c,h(a,d)). d) ?- replace_var_args(t(X, Y, Z,a,f(Z,b)), [1,2,3], NewTerm). NewTerm = t(1,2,3,a,f(Z,b)).