Мне нужно набрать и сгенерировать конфигурацию, которая содержит строковые значения перечисления.Мне удалось определить следующие строки.В конце мне нужно преобразовать объединение в строковое значение.
let ParameterLocation = < Query : {}
| Header : {}
| Path : {}
| Cookie : {}
>
let ParameterObject = {
name : Text,
`in` : ParameterLocation,
required : Bool
}
let locationToText = \(loc : ParameterLocation) -> merge {
Query = \(_ : {}) -> "query",
Header = \(_ : {}) -> "header",
Path = \(_ : {}) -> "path",
Cookie = \(_ : {}) -> "cookie"
} loc
let t : ParameterObject = {
name = "organisation_id",
`in` = ParameterLocation.Query {=},
required = False
}
in t // { `in` = locationToText t.`in` }
Здесь запись, содержащая объединение / перечисление, находится сверху, поэтому я могу довольно легко получить к ней доступ, но в окончательной конфигурации ParameterObjectСи довольно глубоко вложенный.
Есть ли способ
- "пересечь" произвольную структуру записи и применить locationToText везде, где это применимо?
- или скормить dhall-json / dhall-yaml принтером для такого значения?
- или лучший способ определить мое перечисление для более легкого достижения моей цели?