我正在阅读Colin Myers、Chris Clack 和 Ellen Poon 所著的《Programming with Standard ML》 。在 \xc2\xa7 2.4.1受限多态函数中:
\n\n\n与运算符
\n=and不同<>,其他比较运算符(>等<)是重载的;它们不受限制的多态性,因此以下定义失败:Run Code Online (Sandbox Code Playgroud)\n- fun wrong_ordered (x, y, z)\n = (x < y) andalso (y < z);\nError: overloaded variable "<" cannot be resolved\n\n
x发生此故障的原因是 SML 不知道、y和的类型z。
当我将该定义输入 SML/NJ 110.99.2 和 Poly/ML 5.9 时,我没有收到任何错误消息。定义成功:
\n- fun wrong_ordered (x, y, z) = (x < y) andalso (y < z);\nval wrong_ordered = fn : int * int * int -> bool\nRun Code Online (Sandbox Code Playgroud)\n为什么我没有得到作者所说的错误?
\n