Dhall - карта на поле для записи - PullRequest
0 голосов
/ 13 января 2020

У меня есть тип

let Resource = \(a : Type) ->
  { name : Text
  , type : Text
  , properties : a
  }

и функция foo : InstanceTemplateProperties -> Properties.

Мне нужно создать функцию Resource InstanceTemplateProperties -> Resource Properties.

Я мог бы написать ее как

\(p : Resource InstanceTemplateProperties) ->
  { name = p.name
  , type = p.type
  , properties = foo p.properties
  } : Resource Properties

но это выглядит действительно громоздким. Есть ли более простой и более идиоматический c способ сделать это?

1 Ответ

1 голос
/ 13 января 2020

Вы можете использовать // для объединения обновленных свойств с оригиналом.

(\p : Resource InstanceTemplateProperties) ->
  p // {properties = foo p.properties)
...