下面的代码编译:GHC不能推断的功能类型从名为`ReaderT(代理p)的IO()`
import Control.Monad.Trans.Reader
import Data.Proxy
f1 :: ReaderT (Proxy p) IO()
f1 = f2
f2 = undefined
GHC知道的f1
类型:
> :t f1
f1 :: ReaderT (Proxy p) IO()
但它可以” t找出类型f2
:
> :t f2
f2 :: t
怎么了?
我的想法是将Proxy
放入阅读器中,这样我就不必传递它。不知怎的,这是一个问题吗?
'f2'的类型是'forall t。 (''forall'是隐含的,所以当GHCi打印时它被省略)。这是'undefined'的类型。 'f2'的类型不能被它的使用方式所限制。如果这种事情发生了,如果你使用'id'a'',你就不能在非'Char'类型上使用'id'。 –