Pet*_*ake 3 variables binding haskell types type-inference
:t 3给出3 :: Num a => a,因为文字 3 没有特定类型。
早在 2013 年,当我制作这个视频时,如果我用 绑定 3 到变量名let x = 3,Haskell 必须提交一个类型,所以:t x会给出x :: Integer。
不过,当我最近(2022 年)重复这一点时,我得到了x :: Num a => a. 显然,绑定到变量的值现在可以延迟提交到类型。
发生了什么变化?
这种行为是单态限制的结果。默认情况下,该限制在常规编译中仍然处于启用状态,但在 ghci 中被禁用,因为如果没有全局推断,它会变得更加笨拙。
\nhttps://downloads.haskell.org/ghc/latest/docs/users_guide/exts/monomorphism.html
\n\n\n从 GHC 7.8.1 开始,GHCi\xe2\x80\x99s 交互选项中的单态限制默认关闭
\n