Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
考虑这样的代码:
fun equals(a : 'a,b : 'a) = a = b;
我的代码更大,但这就是问题所在。SML 报告“错误:运算符和操作数不一致”。
我是 SML 的初学者,我不知道它为什么会抱怨。这是否类似于 C# 问题,您不能真正比较任何类型的两个值,但您必须对类型使用默认相等比较器?我应该添加一些约束'a(我希望我将它正确地写为泛型类型)?
'a
而不是'a,使用''a.
''a
前面有两个引号而不是一个的类型是相等类型,这意味着=运算符对其进行操作。不过,这也意味着您不能在非相等类型的事物上调用您的函数。
=
此外,您实际上不必编写类型。如果你只是这样做:
fun equals (a,b) = a = b;
SML 将推断类型。