我应该在Monty Python电影中实现一个小序幕程序,人们在争论这女人是否是女巫。根据说法,巫婆被烧了,但是木头也被烧了,木头也漂浮了,但是鸭子也漂浮了,所以,如果某人的体重和鸭子一样,那就是木头做的,因此,她就是一个巫婆。
基于此,我提出了以下建议:
There is no directive with "exportAs" set to "ngModel"
但是当我想检查X是否是巫婆时,可以尝试使用witch(X)。它实际上打印出“ true”,表明该女人是女巫,但我还收到一条witch(X) :- burns(X), female(X).
burns(X) :- wooden(X).
wooden(X) :- floats(X).
floats(X) :- sameWeight(duck, X).
female(X).
sameweight(duck, X).
错误消息。很明显,我在某个地方有一个错误,我想修复它。
答案 0 :(得分:3)
这些是警告。它指定在子句中使用变量一次。在以下情况中的X
就是这种情况:
female(X).
sameweight(duck, X).
现在,这有点“奇怪”了。变量通常用于将值从头传递到主体,或在主体中的两个谓词调用之间传递。但是这里您只使用一次X
。
如果您“不在乎”该值,则在Prolog中使用下划线(_
)。下划线是一个“匿名变量”:如果在同一子句中使用两个下划线,则它们是两个不同变量。
所以您可以像这样修复它:
female(_).
sameweight(duck, _).
请注意,现在您已经写到一切是female
,并且所有事物的权重都与duck
相同。