3
我最近在Prolog中看到了一個使用謂詞#=/2的程序。我看着這個向上上the SWI prolog website在那裏它們將它定義爲#在Prolog中意味着什麼?
算術表達式X等於Y.當在整數推理,替換是/ 2#=π/ 2以獲得更一般的關係。
什麼我不明白這是怎麼#=/2可以更「一般」,因爲它是只爲整數。
我最近在Prolog中看到了一個使用謂詞#=/2的程序。我看着這個向上上the SWI prolog website在那裏它們將它定義爲#在Prolog中意味着什麼?
算術表達式X等於Y.當在整數推理,替換是/ 2#=π/ 2以獲得更一般的關係。
什麼我不明白這是怎麼#=/2可以更「一般」,因爲它是只爲整數。
從文檔entry page:
它們實現純關係整數表達之間,可以在四面八方
只是一個例子可以使用:
?- X+3 #= X*2.
X = 3.
看起來很簡單,但實際上在常規算術表達式評估中很難獲得這樣的結果。
?- X+3 is X*2.
ERROR: is/2: Arguments are not sufficiently instantiated
從is/2頁,就可以看到簽名
-Number is +Expr
其中+Expr
意味着它必須是地面。
另外,左參數是/ 2實際上應該是原子:
?- 3+3 is 3*2.
false.
儘管我們知道上述聲明應該是真實的......
的說明:名稱正如@false所指出的,CLP(FD)有點像'輕描淡寫',可以命名爲CLP(Z),因爲域的有限性通常可以放寬。