2
考慮這樣的代碼:如何比較泛型類型的值?
fun equals(a : 'a,b : 'a) =
a = b;
我的代碼是大,但是這就是問題所在。 SML報告「錯誤:操作符和操作數不同意」。
我完全初學SML,我不知道它爲什麼抱怨。這是類似於C#的問題,你不能真正比較任何類型的兩個值,但你必須使用默認的相等比較器的類型?我應該在'a
上添加一些約束(我希望我把它寫成正確的類型)?
考慮這樣的代碼:如何比較泛型類型的值?
fun equals(a : 'a,b : 'a) =
a = b;
我的代碼是大,但是這就是問題所在。 SML報告「錯誤:操作符和操作數不同意」。
我完全初學SML,我不知道它爲什麼抱怨。這是類似於C#的問題,你不能真正比較任何類型的兩個值,但你必須使用默認的相等比較器的類型?我應該在'a
上添加一些約束(我希望我把它寫成正確的類型)?
而不是'a
,請使用''a
。
在它前面有兩個引號而不是一個的類型是相等類型,這意味着=
運算符對它起作用。這也意味着你不能在不是平等類型的東西上調用你的函數。
另外,您實際上並不需要編寫這些類型。如果你這樣做:
fun equals (a,b) = a = b;
SML將推斷類型。
謝謝您的解決方案,解釋和所有:-)。最後一種形式確實是最好的形式。 – greenoldman