在Prolog中使用非基本事实?

时间:2009-11-12 21:11:06

标签: prolog

在Prolog中你可以写一个基本事实:

lost(jen).

您还可以将非基本事实写为:

lost(X).

这有什么意义吗?你能告诉我一个实际的/真实的例子吗?

谢谢,

2 个答案:

答案 0 :(得分:3)

另一个避免列表的情况是大多数情况都是“真实的”,你只想排除一些错误的案例。因此,你故意使案件失败,然后让其他一切都通过。

然后你可以做,说...

inhabited(antarctica) :- !, fail.

% all the other continents are inhabited
inhabited(_).

答案 1 :(得分:2)

嗯,除了原子之外,你还可以拥有其他事实,例如你可以有列表。完成后,您可能想了解一个单元素列表,并且可以

oneelement([X]).

同样,假设您要比较列表中的最后一个元素

lastelement([X],X).
lastelement([_|Remainder],X) :- lastelement(Remainder,X).

非常有用的member谓词定义为

member([X|_],X).
member([_|Remainder],X) :- member(Remainder,X).

每个都使用非基础事实作为基本案例,通过匹配比lost(X)更具体的特殊形式