我在要求我在 Prolog 中实现经典的 arg 谓词的练习中遇到了一些麻烦。
arg(?Arg, +Term, ?Value)
其中 Arg 是 Term 参数列表中参数的索引。值它是这个参数的值。
例如:
arg(1, t(f(X),Y,a), Value)
Value = f(X).
因为 f(x) 它是 t 主函子的参数列表中的第一个参数。
所以我试图以这种方式使用 univ =..谓词来解决练习:
myArg(ArgIndex, Term, ArgValue) :- integer(ArgIndex),
Term =.. [_|ArgsList],
countArg(ArgsList, ArgIndex, ArgValue).
我的想法是: ArgIndex 必须是一个整数,我可以将我的 Term 分解为其主函子和参数列表ArgsList,现在我必须计算参数(在此列表中),直到 ArgIndex 为 0
但我无法计算并接受这个值......