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

Я пытаюсь использовать dhall для ввода спецификации openapi .Следуя описанию объекта требований безопасности , для которого открытый объект API имеет массив, я пишу следующий код:

let SecurityRequirement =
  {
    mapKey: Text
  , mapValue: List Text
  }
in
let req1 : SecurityRequirement =
  { mapKey = "AuthorizationHeader"
  , mapValue = ([] : List Text)
  }
let req2 : SecurityRequirement =
  { mapKey = "Foo"
  , mapValue = ([] : List Text)
  }
let requirements : List SecurityRequirement =
  [ req1, req2 ]
in requirements

С этим кодом я получаю {"Foo":[],"AuthorizationHeader":[]}, пока яЯ пытаюсь получить [{"Foo":[]},{"AuthorizationHeader":[]}].Как мне достичь своей цели?

1 Ответ

0 голосов
/ 27 апреля 2019

Если вы измените тип SecurityRequirement на List { mapKey : Text, mapValue : List Text }, то он будет вести себя так, как вы запрашивали:

let SecurityRequirement = List { mapKey : Text, mapValue : List Text }

let req1
    : SecurityRequirement
    = [ { mapKey = "AuthorizationHeader", mapValue = [] : List Text } ]

let req2
    : SecurityRequirement
    = [ { mapKey = "Foo", mapValue = [] : List Text } ]

let requirements : List SecurityRequirement = [ req1, req2 ]

in  requirements
$ dhall-to-json <<< './example.dhall' 
[{"AuthorizationHeader":[]},{"Foo":[]}]
...