sch*_*san 6 haskell acid aeson
我想存储aeson值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)
Run Code Online (Sandbox Code Playgroud)
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))))
Run Code Online (Sandbox Code Playgroud)
显然,您已经达到了 Template Haskell 函数的极限deriveSafeCopy。
您可以通过手动提供实例来解决该问题。SafeCopy API包含有关如何执行此操作的综合文档。有关其他示例,您可以查看如何声明默认实例。