我有一些事实:
person(david).
student(david).
我需要找到david
所在的仿函数。所以我需要发布一个类似的查询:
some_query(david)
我需要答案
person
和
student
。
我如何在Prolog中执行此操作? 谢谢!
答案 0 :(得分:1)
如果不诉诸解释器提供的某些特殊谓词,这是不可能的,即,这不再是纯粹的Prolog,但对于swi-prolog,这是有效的:
findFor(Const, X) :-
current_predicate(X, Z),
not(predicate_property(Z, built_in)),
Z =.. [_, _],
Y =.. [X, Const],
call(Y).
然后只需致电:findFor(david, X)
,或者如果您希望一个查询中的所有答案都使用findAll
。