Map和StrMap的ToYAML实例

时间:2017-05-09 12:38:32

标签: generics yaml purescript

purescript-yaml库为ToYAMLTuple等简单类型定义Array个实例。

如何获取或推导ToYAMLMap的{​​{1}}个实例? 我在某处可以看到StrMap可以使用,但是如何使用?

1 个答案:

答案 0 :(得分:1)

这似乎可以转换StrMap a ...

import Data.Map as M
import Data.StrMap as StrMap

instance strMapToYAML :: (ToYAML a) => ToYAML (StrMap a) where
  toYAML strMap = YObject $ StrMap.fold (\acc key value ->
    M.insert key (toYAML value) acc
  ) M.empty strMap

当前实现使用YObject作为Map String YValue的类型别名因此,此实例将StrMap a转换为Map String YValue,然后使用{{1}包装它数据构造函数。

可以类似地定义YObject的实例,但您必须确保Map a b可以转换为字符串,a可以转换为{{1} }}

编辑 - 我刚刚意识到如果你尝试将它放在你自己的代码中,你会有一个孤儿实例。这需要进入核心库。您可以等待对作者的pull请求,也可以将repo分叉并将该实例添加到Data.YAML.Foreign.Encode模块。