1

我正在尝试实现一个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 将是一个记录类型,以便可以解释这个通用方法?

4

1 回答 1

1

不,这目前在该语言中是不可能的。

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

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

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

于 2019-11-10T23:30:34.963 回答