【发布时间】:2013-04-06 03:12:27
【问题描述】:
我在一个要求我在 Prolog 中实现经典 arg 谓词的练习中遇到了一些问题。
arg(?Arg, +Term, ?Value)
其中 Arg 是 Term 参数列表中参数的索引。 value 就是这个参数的值。
例如:
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
但我无法计算并取这个值...
【问题讨论】:
标签: prolog