我讀書時遇到問題。 我看到一個程序使用謂詞「簡單」(我猜simple/1
)。我不知道這個謂詞的含義是什麼,我在控制檯中找不到?-help(simple)
。 但是,當我在控制檯某些查詢嘗試,它的工作是這樣的:Prolog中的謂詞「simple/1」是什麼意思(SWI-Prolog)
5 ?- simple(p(x)).
false.
6 ?- simple(mia).
true.
7 ?- simple(Mia).
true.
8 ?- simple(f(Mia)).
false.
我想這是某種形式的謂語,以確定是否論據條款(或變量)或複雜的術語。
作爲一般性評論 - 「simple/1」這樣的定義並不是很有用,因爲它將兩個測試級別合併到一個謂詞中。 – false 2012-02-17 00:51:50
@false:你的意思是這個分解引入了一個無用的選擇點嗎?我不知道'測試級別'是什麼...... – CapelliC 2012-02-17 09:40:05
當您編寫顯式依賴於參數實例化的謂詞時,最好將實例化測試分開var(X)',nonvar (X)'來自其他測試。特別是,明確處理這兩種情況是一個好主意。否則,很難推斷謂詞。 '簡單/ 1'混合兩個級別。而且,順便說一句。也''原子/ 1','整數/ 1'等做到這一點。但是,如果你以前做過'var' /'nonvar'測試,那麼它們的問題就更少了。 – false 2012-02-17 12:53:59