0

我正在尝试使用 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":[]}]. 我怎样才能实现我的目标?

4

1 回答 1

0

如果您将类型更改为SecurityRequirementList { 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":[]}]
于 2019-04-27T19:07:56.113 回答