gpt4 book ai didi

sml - 为什么使用这些重载运算符定义函数时不会出错?

转载 作者:行者123 更新时间:2023-12-05 09:26:29 25 4
gpt4 key购买 nike

我正在阅读 Colin Myers、Chris Clack 和 Ellen Poon 的Programming with Standard ML。在 § 2.4.1 受限多态函数中:

Unlike the operators = and <>, the other comparison operators (>, < etc.) are overloaded; they are not restricted polymorphic and therefore the following definition fails:

- fun wrong_ordered (x, y, z)
= (x < y) andalso (y < z);
Error: overloaded variable "<" cannot be resolved

This failure occurs because SML does not know the types of x, y and z.

当我将该定义输入 SML/NJ 110.99.2 和 Poly/ML 5.9 时,我没有收到任何错误消息。定义成功:

- fun wrong_ordered (x, y, z) = (x < y) andalso (y < z);
val wrong_ordered = fn : int * int * int -> bool

为什么我没有得到作者说我会得到的错误?

最佳答案

这本书早于 SML'97。使用该语言版本,重载运算符的类型解析得到了改进。特别是,当重载类型无法通过上下文解析时,它们现在默认为 int

关于sml - 为什么使用这些重载运算符定义函数时不会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73948213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com