在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