我正在使用Data.Yaml
以人類可讀的格式存儲一些數據。但是,數據的某些部分是數字列表或矩陣。在YAML輸出,block sequence style,相當冗長:如何在Haskell中編寫內聯YAML(流式)?
- - 1
- 2
- 3
- - 4
- 5
相反,我想這些部件在flow sequence style進行編碼,就像
[[1,2,3],[4,5]]
有沒有辦法如何做到這一點?
我正在使用Data.Yaml
以人類可讀的格式存儲一些數據。但是,數據的某些部分是數字列表或矩陣。在YAML輸出,block sequence style,相當冗長:如何在Haskell中編寫內聯YAML(流式)?
- - 1
- 2
- 3
- - 4
- 5
相反,我想這些部件在flow sequence style進行編碼,就像
[[1,2,3],[4,5]]
有沒有辦法如何做到這一點?
不幸的不是。 yaml
使用libyaml
。雖然您想使用flow sequence style,但current implementation使用YAML_ANY_SEQUENCE_STYLE
(0)而不是YAML_FLOW_SEQUENCE_STYLE
(2),因此使用YAML_BLOCK_SEQUENCE_STYLE
(1,但發射器僅檢查與YAML_FLOW_SEQUENCE_STYLE
相等)。
這是硬編碼到Haskell的toEventRaw
包裝。應該可以編寫encodeWith
,它使用特殊的toEventRawWith
並採取其他選項,但目前情況並非如此。 你可能open a feature request,然而,有一個feature request。
編輯:事實上,Data.Yaml.encode
將返回"[[1,2,3], [4,5]]"
如果一個替代與2 -- YAML_FLOW_SEQUENCE_STYLE
的0 -- YAML_ANY_SEQUENCE_STYLE
所有出現的Text/Libyaml.hs
。所以你要麼需要在本地修補庫,要麼提問功能請求。
你想讓你生成的YAML包含haskell列表嗎? – rampion
@rampion:可能是_flow sequence style_列表,而不是當前的_block sequence style_列表。 – Zeta