如何避免为Data.Tree创建一个孤立的FromJSON实例

前端之家收集整理的这篇文章主要介绍了如何避免为Data.Tree创建一个孤立的FromJSON实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用aeson包.我的数据类型在其声明中使用Data.Tree.如下所示,只有更复杂:
data Foo = Foo {
               bat :: Text,xux :: Maybe Text,tri :: Tree Text
            }

我想使用Data.Aeson.TH为此类型生成一个FromJSON实例.

$(deriveJSON defaultOptions ''Foo)

但是Data.Tree没有一个用于FromJSON的标准实例,这意味着我需要声明一个孤立的实例.

有没有办法避免创建这个孤立实例,同时仍然能够使用derivedJSON?

解决方法

为了使实例成为规范(即不是孤儿),它需要在类型构造函数(Data.Tree)或类声明(Data.Aeson.Types)的同一模块中进行定义.因此,定义非孤立实例的唯一方法是将aeson(因为aeson依赖于容器).

我建议用aeson或者可能的一个拉动请求来添加上一个filing a ticket.在此之前,如果您不打算分发代码,则定义孤立实例不应该导致很多麻烦.如果您正在处理要发布的代码,则最安全的解决方案是在Tree周围创建一个新的包装器,然后为新类型创建一个FromJSON实例.

原文链接:https://www.f2er.com/js/152243.html

猜你在找的JavaScript相关文章