gpt4 book ai didi

types - SML 算术函数的类型被推断为 int

转载 作者:行者123 更新时间:2023-12-01 09:02:55 25 4
gpt4 key购买 nike

当定义一个取值平方的简单函数时,SML NJ 将此函数的签名推断为整数类型。在声明浮点类型的签名时,SML 可以在此处处理浮点值。

- fun sqr x = x * x;val sqr = fn : int -> int- fun sqqr (x : real) = x * x;val sqqr = fn : real -> real- sqqr 3.4;val it = 11.56 : real
  • SML 为什么以及如何在此处推断出这种特定类型?
  • 是否有对整数的特定偏好?
  • 这是这些算术运算的特殊行为还是可以在其他地方找到?

最佳答案

SML 的类型处理方法确实不能很好地处理重载,这就是为什么您不能定义自己的重载函数的原因。但是——算术运算符和关系运算符的重载在编程语言中非常普遍,以至于 SML 的设计者接受了 +* 等标准重载。这带来了一个问题SML 的类型推断机制。为了解决这个问题,他们可能需要在这种情况下进行显式类型声明,但这会降低类型推断的用处。相反,他们捕获了为函数选择默认类型的想法,这些函数具有其定义对整数和实数(如果涉及 < 或 >)都非常有意义的属性,以及覆盖默认值的机制。鉴于 SML 的主要应用是自动定理证明而不是数值分析,int 似乎是自然的选择。每次我需要覆盖它时,我可能已经接受了 10 次默认值。

关于types - SML 算术函数的类型被推断为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32079091/

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