所以我使用了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.Aeson
或Data.Aeson.Types
导出。我被迫没有为我定义的函数设置类型签名吗?
或者,如果有人知道更好的方式来完成我想做的事情,我会对你的建议感兴趣。
答案 0 :(得分:3)
目前,在Haskell中完全有可能编写具有推断类型的代码,由于未导出的符号,您无法自己编写。 2014年4月Haskell图书馆邮件列表上有一个discussion about this,但没有得出确切的结论,但一般意义上是保持当前的行为。
但是,一般规则是,如果需要语言扩展来编写将被推断的类型签名,那么即使您未明确包含签名,也需要启用该扩展