如何在 Haskell 中编写内联 YAML(流式)?

How to write inline YAML (flow style) in Haskell?

我正在使用 Data.Yaml to store some data in human readable format. However, some parts of the data are lists or matrices of numbers. The YAML output, block sequence style,非常冗长:

- - 1
  - 2
  - 3
- - 4
  - 5

相反,我希望这些部分在 flow sequence style 中编码,就像

[[1,2,3],[4,5]]

有什么办法吗?

不幸的是没有。 yaml 使用 libyaml。虽然您想使用 flow sequence style, the current implementation 使用 YAML_ANY_SEQUENCE_STYLE (0) 而不是 YAML_FLOW_SEQUENCE_STYLE (2),因此 YAML_BLOCK_SEQUENCE_STYLE (1,但发射器仅检查与YAML_FLOW_SEQUENCE_STYLE).

然而,这被硬编码到 toEventRaw wrapper in Haskell. It should be possible to write encodeWith, that uses a special toEventRawWith and takes additional options, but that's currently not the case. You could open a feature request, There's a feature request 中。

编辑: 事实上,Data.Yaml.encode 将 return "[[1,2,3], [4,5]]" 如果用 [=22 替换所有出现的 0 -- YAML_ANY_SEQUENCE_STYLE =] 在 Text/Libyaml.hs 中。因此,您要么需要在本地修补库,要么询问该功能请求。