小编zbw*_*zbw的帖子

为什么GHC和GHCI在类型推断上有所不同?

我注意到,在进行codegolf挑战时,默认情况下,GHC不会推断变量的最常规类型,当您尝试使用两种不同类型时会导致类型错误.

例如:

(!) = elem
x = 'l' ! "hello" -- From its use here, GHC assumes (!) :: Char -> [Char] -> Bool
y = 5 ! [3..8] -- Fails because GHC expects these numbers to be of type Char, too
Run Code Online (Sandbox Code Playgroud)

这可以使用pragma进行更改NoMonomorphismRestriction.

但是,将此键入GHCI不会产生类型错误,并且:t (!)在此处显示(Foldable t, Eq a) => a -> t a -> Bool,即使显式运行,也会假设-XMonomorphismRestriction.

为什么GHC和GHCI在假定最常用的函数类型方面有所不同?

(另外,为什么默认启用它?它有什么帮助?)

haskell ghc ghci

3
推荐指数
1
解决办法
413
查看次数

标签 统计

ghc ×1

ghci ×1

haskell ×1