所以我有一个事实weather(jan, 17, cold, wind, snow).
和规则
match(W,D,T) :-
weather(W,D,T,_,_)
; weather(W,D,_,T,_)
; weather(W,D,_,_,T).
当我输入match(jan, 17, wind).
Prolog返回true; false.
时,我希望它只返回true,但它也返回false,我该如何解决?
答案 0 :(得分:-1)
我不鼓励使用“;” (OR)运算符(不可读的代码)。 这是你应该写的:
match(W,D,T) :-
weather(W,D,T,_,_),
!.
match(W,D,T) :-
weather(W,D,_,T,_),
!.
match(W,D,T) :-
weather(W,D,_,_,T).
由于回溯,您之前的代码“返回”true和false。这没什么不对。