我正在努力地思考Dhall中编程的工作原理。考虑以下联合类型:
let Object = < NoId | WithId : Text >
我想编写一个函数extractId
,该函数返回包含ID(或Optional Text
)的None
,但是我找不到在Dhall中进行销毁的方法。
答案 0 :(得分:3)
答案是使用merge
函数。对于联合类型的每个构造函数,都需要一个带有一个处理函数的集合。因此,要将上面的示例联合变成Optional Text
,我们可以做到:
let someObject = Object.NoId
let handlers = { NoId = None Text, WithId = λ(t : Text) → Some t }
in merge handlers someObject