我正在尝试生成一些包含带有动态键的映射的YAML,如here所述。如果我使用Text
键,则此方法有效,但当键具有任何其他类型时,则无效。如果可能的话,我想对密钥使用联合类型。
我尝试为mapKey
使用不同的类型,包括联合类型和Natural
,但没有成功。我可以通过将所有mapKey
的值都转换为Text
来解决此问题,但这并不理想。
这是我要做什么的一个最小示例:
let Union = <A | B>
in
[{mapKey = Union.A, mapValue = "foo"}]
我希望它会生成YAML:
A: foo
但是,生成的YAML看起来像这样:
- mapKey: A
mapValue: foo
答案 0 :(得分:0)
您的问题启发了该功能的添加,该功能将在下一版本(1.25.0版)中提供。参见:
https://github.com/dhall-lang/dhall-haskell/pull/1094
这也将在另一个方向上起作用,这意味着{json,yaml}-to-dhall
将能够根据架构的要求将记录键解码为并集:
$ json-to-dhall 'List { mapKey : < A | B >, mapValue : Natural }' <<< '{"A": 1, "B": 2}'
[ { mapKey = < A | B >.A, mapValue = 1 }, { mapKey = < A | B >.B, mapValue = 2 } ]