數學

2016-11-08 55 views
0

有沒有一種方法,使這項工作?數學

add(X, X + 1) 

input:add(1,Y)。
預期輸出:Y = 2
輸出:Y = 1 + 1。

或者是隻有這樣做可以嗎?

add(X, Y):- Y is X+1. 
+3

'X + 1'僅表示' '+'(X,1)',它不是評估除非使用術語'是/ 2',算術表達式比較器,或CLP(FD)。你可以使用'添加(X,Y):= Y#= X + 1',如果你想讓它關係性工作('加(X,2)'會產生'X = 1')。 – lurker

回答

2

從歷史上看,已經有很多嘗試提供這種功能。讓我給出早期的例子CLP(ℜ)(大約1986)或更近的Prolog IV。然而,遲早會發現程序員需要更好地控制所採用的統一類型。以一個想要區分公式的程序爲例。在這種情況下,解釋函數將不會有任何用處。由於這個原因,大多數約束條件都是在今天發佈的,因爲一些添加的謂詞使得函子不被解釋。通過這種方式,它們也符合允許作爲擴展的限制的ISO-Prolog。

從程序員的角度來看,延長和你將減少所需的輔助變量的數量,但是,它也需要所有條款解釋爲此產生了很多額外的開銷。