Как использовать слияние с абстрактным типом? - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь реализовать общую процедуру, которая использует 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

IsМожно ли указать, что configType будет тип записи, так что этот универсальный метод может быть интерпретирован?

1 Ответ

0 голосов
/ 11 ноября 2019

Нет, в настоящее время это невозможно на языке.

В следующем выпуске GitHub мы обсуждали добавление типа Row к языку, чтобы отличать типы записей от других типов:

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

... но в конечном итоге решили исходную проблему другим способом.

...