如何使用抽象类型合并?

时间:2019-11-10 12:31:14

标签: dhall

我正在尝试实现一个将merge与抽象类型一起使用的通用过程,但是即使调用者传递了记录类型,它也始终会以❰merge❱ expects a record of handlers失败:

let Keys
    : Type
    = < A | B >

let ConfigType
    : Type
    = { A : Text, B : Text }

let Renderer =
        λ(configType : Type)
      → λ(config : configType)
      → λ(value : Keys)
      → merge config value

in  Renderer ConfigType { A = "A", B = "B" } Keys.A

是否可以指示configType将是记录类型,以便可以解释此通用方法?

1 个答案:

答案 0 :(得分:0)

否,目前在该语言中无法实现。

在以下GitHub问题中,我们讨论了在语言中添加一种Row类型以区分记录类型和其他类型:

https://github.com/dhall-lang/dhall-lang/issues/434

...但是最终以不同的方式解决了原始问题。