3

我正试图了解编程在 Dhall 中是如何工作的。考虑以下联合类型:

let Object = < NoId | WithId : Text >

我想编写一个extractId返回Optional Text包含 Id (或None)的函数,但我找不到在 Dhall 中进行解构的方法。

4

1 回答 1

4

答案是使用merge函数。它期望为联合类型的每个构造函数提供一个具有一个处理函数的集合。因此,要将上面的示例 union 转换为Optional Text,我们可以这样做:

let someObject = Object.NoId

let handlers = { NoId = None Text, WithId = λ(t : Text) → Some t }

in  merge handlers someObject

于 2020-01-26T19:32:44.980 回答