【问题标题】:How to write a function that handles a Union type in Dhall如何在 Dhall 中编写处理联合类型的函数
【发布时间】:2020-01-27 03:32:44
【问题描述】:

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

let Object = < NoId | WithId : Text >

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

【问题讨论】:

    标签: functional-programming dhall


    【解决方案1】:

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

    let someObject = Object.NoId
    
    let handlers = { NoId = None Text, WithId = λ(t : Text) → Some t }
    
    in  merge handlers someObject
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-30
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多