2017-06-19 202 views
0

我认为这是一个非常简单的问题,但我仍然无法解决它。SWI Prolog等价

如何在Prolog中定义两个方向的逻辑结果?

例如我的数据库包含此:

need_umbrealla(X) :- rainy(X). 
rainy(X) :- need_umbrealla(X). 

它总是导致永久性的循环,如果我的要求去做

rainy(X). 

我的解释。

我能在那里做什么?

感谢您的帮助=)

+3

应该是什么'阴雨(X)'的输出? –

+1

查看[标签:failure-slice] – false

+2

@WillemVanOnsem当前天气,据说是:) –

回答

1

您声明为阴雨变量X是需要一把伞同一个变量。什么是X?天气需要雨伞吗?

你可以只声明:
needs_umbrella(X , rainy).

与要求:

needs_umbrella(monday, rainy). 
true 

needs_umbrella(monday, sunny). 
false 
+1

谢谢,它帮助! – patrickkr