我正在尝试实现一个将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将是记录类型,以便可以解释此通用方法?
答案 0 :(得分:0)
否,目前在该语言中无法实现。
在以下GitHub问题中,我们讨论了在语言中添加一种Row
类型以区分记录类型和其他类型:
https://github.com/dhall-lang/dhall-lang/issues/434
...但是最终以不同的方式解决了原始问题。