smlnj會重載運算符,就像op +默認使用int一樣,現在我想要它返回一個真實的函數* real - > real,我該怎麼做inline方式?在smlnj中使用非默認的重載運算符smlnj
「內聯的方式」是指沒有像結合了新的VAL:如果我的記憶是正確的
fun add(x:real,y:real) = x + y;
有一些語法允許SML它只是像做「演員」 OP +真實,但我無法在任何地方找到它。
smlnj會重載運算符,就像op +默認使用int一樣,現在我想要它返回一個真實的函數* real - > real,我該怎麼做inline方式?在smlnj中使用非默認的重載運算符smlnj
「內聯的方式」是指沒有像結合了新的VAL:如果我的記憶是正確的
fun add(x:real,y:real) = x + y;
有一些語法允許SML它只是像做「演員」 OP +真實,但我無法在任何地方找到它。
有多種方式可以讓SML輸入op+
作爲真正的對應物。
取決於你有什麼都碼,
您可以按照提示,輸入註釋周圍的功能,從而強制使用的參數op+
是實數類型。
既然你nonfixing加法函數(大概用作高階函數?),你也可以同樣沿着除了功能通過從實際模塊Real.+
或者你可以註釋它像這個:op+ : real * real -> real
,這真的很醜陋,考慮到你可以用Real.+
來代替。但它是一種選擇。
如果運算符的默認實例不是您需要的值的類型,則可以在操作數上使用類型註釋來強制執行所需的輸入。
例如,雖然
val f = fn a => a + a
將被輸入int -> int
,該值
val g = fn a:real => a + a
將鍵入real -> real
。
您可以在您定義的功能範圍申報
open Real
,但我強烈反對這一點。鍵入註釋函數是最好的方法。你不必註釋每一個參數,順便說一句,這足以做一個,或在這種情況下,即使是返回類型:
fun add(x : real, y) = x + y
fun add(x, y) : real = x + y