f# - 为什么在F#中没有隐式转换?

标签 f#

F#不支持隐式转换。我知道这是一项功能,但是我不明白为什么即使没有信息丢失也禁止隐式转换。例如:

sqrt 4      // Won't compile.

我看不到将int 4隐式转换为float的问题,这是sqrt所需的。

谁能阐明这一点?

最佳答案

因为它的类型检查器几乎依赖于经典的强类型重构。您的示例要求强制类型,这可以通过隐式强制转换或弱类型系统来实现,但是在这种类型推断中不允许使用这些类型。

由于 F#来自OCaml,它具有一种类型重构,可以通过极高的学问来保证程序的正确性:该算法试图将程序的整个类型统一为一个好的类型,而如果弱类型规则无法实现允许考虑一个像浮点数的整数。

关于f# - 为什么在F#中没有隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4111627/

相关文章:

c# - 如何从线程池中的 C# 程序运行 Main() 方法?

f# - 在 Visual Studio 代码中构建项目时如何指定目标体系结构?

f# - 无法从 C# 调用部分应用的 F# 函数作为方法

c# - 设计可从 F# 良好使用的 C# 库的指南

f# - 这个例子中的 '*' 有什么用?

f# - 如何遍历联合案例列表并访问每个案例的数据?

arrays - 如何分配 RAM 容纳不下的单个数组

f# - 如何在 F# 中使用 Akka.Streams.*.ConcatMany?

f# - 可以将 F# 与 Web Developer Express Edition 一起使用

.net - Haskell 在 F# 中的 "deriving Show"?