在Prolog你可以写一个地面事实为:在Prolog中使用非基础事实?
lost(jen).
你也可以写一个非地面的事实为:
lost(X).
这是否使任何意义?你能告诉我一个实际/真实的例子,其中使用了非基础事实吗?
感谢,
在Prolog你可以写一个地面事实为:在Prolog中使用非基础事实?
lost(jen).
你也可以写一个非地面的事实为:
lost(X).
这是否使任何意义?你能告诉我一个实际/真实的例子,其中使用了非基础事实吗?
感谢,
另一种避免列表的情况是大多数情况是“真实的”,而您只是想排除一些错误的情况。所以你故意不通过案件,然后让其他一切都通过。
然后你就可以做,说...
inhabited(antarctica) :- !, fail.
% all the other continents are inhabited
inhabited(_).
好了,你可以在事实以外的事情除了原子,例如,你可以有名单。一旦你做到了这一点,你可能想知道一个元素的列表,你可以有
oneelement([X]).
同样,说你要比较的是在一个列表
lastelement([X],X).
lastelement([_|Remainder],X) :- lastelement(Remainder,X).
的最后一个元素
非常有用member
谓词被定义为
member([X|_],X).
member([_|Remainder],X) :- member(Remainder,X).
每个这些使用非接地事实作为基础的情况下,通过匹配的一种特殊形式,它比只是更具体210
我只想做一个备注,如果你会使用一个变量子句中只有1次(不2种或更多用法),序言(特别是SWI)会给你varning,就像“Warning:/path/to/file.pro:123: Singleton variables:[Var]” 你应该在这些地方使用_。 – Xonix 2009-11-12 22:22:10
@Xonix:或者只是用这样的下划线作为现有名称的前缀:'_Foobar'。这样可以避免单身人士的警告,同时让你使用一个解释性的名字。 – bcat 2009-11-14 23:45:49
@Xonix:在(Sicstus)Prolog中,您还必须确保_后的字母是大写字母(如变量名称)以避免警告。 – Rune 2014-05-11 10:07:54