Haskell 部分类型签名

Haskell 部分类型签名,haskell,ghc,type-inference,Haskell,Ghc,Type Inference,可能重复: 考虑以下几点: import Network.HTTP.Conduit (parseUrl "http://stackoverflow.com") :: Maybe a 返回故障HttpException m=>m(请求m') 文件上说: 由于此函数使用的是故障,因此返回的monad可以是任何内容 这是故障的一个实例,例如IO或可能 但是,当我试图强制parseUrl使用Maybe时,我得到以下错误: main.hs:9:11: Couldn't match typ

可能重复:

考虑以下几点:

import Network.HTTP.Conduit  

(parseUrl "http://stackoverflow.com") :: Maybe a
返回故障HttpException m=>m(请求m')

文件上说:

由于此函数使用的是
故障
,因此返回的monad可以是任何内容 这是
故障
的一个实例,例如
IO
可能

但是,当我试图强制
parseUrl
使用
Maybe
时,我得到以下错误:

main.hs:9:11:
    Couldn't match type `a' with `Request m'0'
      `a' is a rigid type variable bound by
          an expression type signature: Maybe a at main.hs:9:10
    Expected type: Maybe a
      Actual type: Maybe (Request m'0)
是否仍有强制类型为
可能
,而不指定完整的确切类型?包括GHC扩展在内的答案很好

请注意,这是有效的:

f :: Maybe a -> Maybe a
f x = x

f (parseUrl "http://stackoverflow.com")

但是在我看来它很难看。

你可以使用
asTypeOf

main = do
    print (parseUrl "http://stackoverflow.com" `asTypeOf` Nothing)
强制单子为
可能是
。但这并不是说它比我们更重要

main = do
    print (parseUrl "http://stackoverflow.com" :: Maybe (Request m))

您可以使用
asTypeOf

main = do
    print (parseUrl "http://stackoverflow.com" `asTypeOf` Nothing)
强制单子为
可能是
。但这并不是说它比我们更重要

main = do
    print (parseUrl "http://stackoverflow.com" :: Maybe (Request m))

我问了一个更好的问题我问了一个更好的问题