我想将查询限制为list中的property(X, use, Y)
值。仅对的那些值成立。我认为以下方法会起作用,但不会。Y
[a,b,c]
c/1
Y
c(a).
c(b).
c(c).
property(X, use, Y).
c(Y).
以下语句仅产生false
。
person(1).
property(1, use, _).
我正在使用Problog,但是这里没有使用任何Problog函数,所以我认为我对统一有一些误解。
我认为c(Y)
可以生成列表,Y
并且可以跨事实进行统一。
更新这确实是特定于Problog的问题,如下所示。
substance(methadone).
substance(heroin).
P::property(X,use,nicotine) :- %doesn't work
property(X,use,Z),
substance(Z),
P is 0.8.
property(X,use,nicotine) :- %works
property(X,use,Z),
substance(Z).
person(1).
substance(Y).
property(1, use, Y).
你可以写:
property(_X, use, Y) :-
c(Y).
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句