我想存储aeson Values usig acid-store。我采用了最少的酸实现方式,并尝试将类型天真地切换为Value。这些是我对deriveSafeCopy的调用:

$(deriveSafeCopy 0 'base ''Object)
$(deriveSafeCopy 0 'base ''Array)
$(deriveSafeCopy 0 'base ''Number)
$(deriveSafeCopy 0 'base ''Value)
$(deriveSafeCopy 0 'base ''JSONState)
$(deriveSafeCopy 0 'base ''JSONStateStore)

JSONState和JSONStateStore是我自己的类型。我收到此错误:
Can't derive SafeCopy instance for: (Data.Aeson.Types.Internal.Object,TyConI (TySynD Data.Aeson.Types.Internal.Object [] (AppT (AppT (ConT Data.HashMap.Base.HashMap) (ConT Data.Text.Internal.Text)) (ConT Data.Aeson.Types.Internal.Value))))

最佳答案

显然,您已经达到了deriveSafeCopy模板Haskell函数可以为您完成的功能的极限。

您可以通过手动提供实例来解决此问题。 SafeCopy API包含有关如何执行此操作的全面文档。有关其他示例,您可以 checkout how the default instances are declared

10-08 02:58