阅读SWI-Prolog documentation on meta-predicates,我最初认为f(...)
相当于f
,其中f(g(x))
是谓词。但我观察到两者的行为在某些情况下实际上有所不同。例如,假设知识库包含条款call(f, g(x))
。然后查询f(call(g, x))
成功,而f(call(g, x))
则不成功。这是有问题的,因为我有时需要使用其主体包含嵌套谓词调用的子句。我希望Prolog能够急切地评估所有谓词调用(我想知道这是否是正确的词?),以便在统一开始之前查询f(g(x))
减少到{{1}}并成功。这可能吗?