2
我跟着https://en.wikibooks.org/wiki/Haskell/Understanding_monads/State和randomIO
直接在ghci
打印一個整數。鑑於其類型是多態的,ghci
在這裏如何知道它是Int
?在ghci
中是否有一些特殊的類型推斷規則?ghci randomio type inference
GHCi> :m System.Random
GHCi> :t randomIO
randomIO :: Random a => IO a
GHCi> randomIO
-1557093684
GHCi> randomIO
1342278538
從技術上講,除非有函數聲明,它不是單態的約束,而只是潛在的默認規則。單態限制是關於默認規則如何應用於函數定義。 – Guvante
我有一個快速查看鏈接; 「默認情況下,在編譯的模塊中啓用了限制,並且在GHCi提示符下(自GHC 7.8.1開始)默認關閉。」看起來它在ghci中關閉了。 (我正在使用ghci 7.10.3。) –
@AlbertNetymk是的,正如上面的評論所說,限制和違約規則是不同的東西。所以限制被關閉,但違約規則仍然適用。看到這個鏈接:https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghci.html#type-defaulting-in-ghci – Shersh