:t 3給出3 :: Num a => a,因為文字 3 沒有特定型別。
早在 2013 年,當我制作這個視頻時,如果我將 3 系結到一個變數名上let x = 3,Haskell 將不得不提交一個型別,所以:t x會給x :: Integer.
不過,當我最近(2022 年)重復這一點時,我得到了x :: Num a => a. 顯然,系結到變數的值現在可以延遲提交型別。
發生了什么變化?
uj5u.com熱心網友回復:
這種行為是單態限制的結果。在常規編譯中默認情況下仍然啟用該限制,但在 ghci 中禁用它,因為沒有全域推斷,它更加笨拙。
https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/monomorphism.html
從 GHC 7.8.1 開始,單態限制在 GHCi 的互動選項中默認關閉
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/511295.html
下一篇:檢查無效輸入的變數被忽略
