Dhall-记录字段上的地图

时间:2020-01-13 17:31:35

标签: functor dhall

我有类型

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

但是看起来真的很麻烦。有没有更简单,更惯用的方式做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用//将更新后的属性合并到原始属性中。

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