a"?-6ren"> a"?-从 GHCi 中的 .hs 文件加载 a = 2+2.0 并执行 :t a 显示 a::Double。 另一方面,在 GHCi 中执行 let b = 2+2.0 和 :t b 会显示 b::Frac-6ren">
gpt4 book ai didi

haskell - 为什么 .hs 文件中的 "(2+2.0)"双倍,而 GHCi 中的 "Fractional a => a"?

转载 作者:行者123 更新时间:2023-12-01 08:55:21 28 4
gpt4 key购买 nike

从 GHCi 中的 .hs 文件加载 a = 2+2.0 并执行 :t a 显示 a::Double

另一方面,在 GHCi 中执行 let b = 2+2.0:t b 会显示 b::Fractional a => a .

您如何从这两个文件中推断出这一点?

我发现这个官方文档几乎无法理解。

最佳答案

This documentation是你想要的,我想。基本上,GHC 默认在 GHCi 中实现与在模块中不同的语言。特别是,在模块中(根据语言)默认启用可怕的单态限制,而在 GHCi 中它被禁用。单态限制是导致 GHC 为您的 a 选择单态类型的原因,而关闭它后,GHC 可以自由泛化 b 的类型,从而产生多态输入你看到的。

关于haskell - 为什么 .hs 文件中的 "(2+2.0)"双倍,而 GHCi 中的 "Fractional a => a"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28336108/

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