Dhall关联列表

Dhall关联列表,dhall,Dhall,我有一个联合类型,我希望一个字段是一个关联列表 let Blah = < First : { name : Text, params: XXX } | Second : { name : Text } > 因此,XXX应该是什么类型的Blah?答案取决于存储在关联列表中的值的类型。在最常见的情况下,您可以在mapValue的类型上参数化Blah类型,如下所示: = λ(a:型) → < 第一: {name:Text,params:List{mapKey:Text,mapValue:

我有一个联合类型,我希望一个字段是一个关联列表

let Blah = < First : { name : Text, params: XXX } | Second : { name : Text } >

因此,
XXX
应该是什么类型的
Blah

答案取决于存储在关联列表中的值的类型。在最常见的情况下,您可以在
mapValue
的类型上参数化
Blah
类型,如下所示:

=
λ(a:型)
→ < 第一:
{name:Text,params:List{mapKey:Text,mapValue:a}
|第二:
{name:Text}
>
(平淡无奇的)首先
{name=“Alex”,params=[{mapKey=“a”,mapValue=1}]}
如果您提前知道所需的
mapValue
类型,您可以硬编码它,而不是将
Blah
作为类型的函数。或者,如果您计划对相同的
mapValue
类型多次使用
Blah
,您可以执行以下操作:

=
λ(a:型)
→ < 第一:
{name:Text,params:List{mapKey:Text,mapValue:a}
|第二:
{name:Text}
>
让Foo=胡说八道
在[Foo.First{name=“Alex”,params=[{mapKey=“a”,mapValue=1}]
,Foo.Second{name=“John”}
]
Blah.First { name = "Alex", params: [{ mapKey = "a", mapValue = 1 }] }