2016-04-03 27 views
3

我最近在Prolog中看到了一個使用謂詞#=/2的程序。我看着這個向上上the SWI prolog website在那裏它們將它定義爲#在Prolog中意味着什麼?

算術表達式X等於Y.當在整數推理,替換是/ 2#=π/ 2以獲得更一般的關係。

什麼我不明白這是怎麼#=/2可以更「一般」,因爲它是只爲整數

回答

6

從文檔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),因爲域的有限性通常可以放寬。