8

所以我使用了 aeson 库,并认为具有以下功能会非常有用:

v .:! f = liftM (fromMaybe mempty) (v .:? f)

当我向 GHCi 询问类型时,我得到:

(.:!)
  :: (Monoid r, FromJSON r) =>
     Object
     -> T.Text -> aeson-0.7.0.6:Data.Aeson.Types.Internal.Parser r

但是,Parser 本身实际上并没有由Data.Aesonor导出Data.Aeson.Types。我是否被迫没有我定义的函数的类型签名?

或者,如果有人知道完成我想做的事情的更好方法,我会对你的建议感兴趣。

4

1 回答 1

4

目前,在 Haskell 中完全有可能编写具有推断类型的代码,由于未导出的符号,您无法自己编写。2014 年 4 月在 Haskell 库邮件列表上对此进行了讨论,没有得出明确的结论,但一般意义上是保持当前行为。

然而,一般规则是,如果需要语言扩展来编写将被推断的类型签名,那么即使您没有明确包含签名,您也需要启用该扩展。

于 2014-07-10T19:08:40.710 回答