【发布时间】:2020-01-27 03:32:44
【问题描述】:
我正试图深入了解 Dhall 中的编程是如何工作的。考虑以下联合类型:
let Object = < NoId | WithId : Text >
我想编写一个函数extractId,它返回一个包含Id(或None)的Optional Text,但我找不到在Dhall 中进行解构的方法。
【问题讨论】:
标签: functional-programming dhall
我正试图深入了解 Dhall 中的编程是如何工作的。考虑以下联合类型:
let Object = < NoId | WithId : Text >
我想编写一个函数extractId,它返回一个包含Id(或None)的Optional Text,但我找不到在Dhall 中进行解构的方法。
【问题讨论】:
标签: functional-programming dhall
答案是使用merge 函数。它期望为联合类型的每个构造函数提供一个具有一个处理函数的集合。所以要将上面的联合例子变成Optional Text,我们可以这样做:
let someObject = Object.NoId
let handlers = { NoId = None Text, WithId = λ(t : Text) → Some t }
in merge handlers someObject
【讨论】: