Generics 如何比较泛型类型的值?

Generics 如何比较泛型类型的值?,generics,sml,Generics,Sml,考虑这样的代码: fun equals(a : 'a,b : 'a) = a = b; 我的代码更大,但这就是问题所在。SML报告“错误:运算符和操作数不一致” 我完全是SML的初学者,我不知道为什么它会抱怨。这是否类似于C#问题,即不能真正比较任何类型的两个值,但必须对该类型使用默认的相等比较器?我是否应该在'a上添加一些约束条件(我希望我将其作为泛型类型正确编写)?使用'a而不是'a 前面有两个引号而不是一个引号的类型是相等类型,这意味着=运算符对其进行操作。但这也意味着不能对非相等类

考虑这样的代码:

fun equals(a : 'a,b : 'a) =
  a = b;
我的代码更大,但这就是问题所在。SML报告“错误:运算符和操作数不一致”


我完全是SML的初学者,我不知道为什么它会抱怨。这是否类似于C#问题,即不能真正比较任何类型的两个值,但必须对该类型使用默认的相等比较器?我是否应该在
'a
上添加一些约束条件(我希望我将其作为泛型类型正确编写)?

使用
'a
而不是
'a

前面有两个引号而不是一个引号的类型是相等类型,这意味着
=
运算符对其进行操作。但这也意味着不能对非相等类型的对象调用函数

此外,您实际上不必编写类型。如果你只是这样做:

fun equals (a,b) = a = b;

SML将推断类型。

感谢您的解决方案、解释和所有:-)。最后一种形式确实是最好的。