packages feed

dhall-1.33.0: dhall-lang/Prelude/List/unpackOptionals

{-
Unpack Optionals in a List, omitting None items.
-}

let List/concatMap =
        ./concatMap sha256:3b2167061d11fda1e4f6de0522cbe83e0d5ac4ef5ddf6bb0b2064470c5d3fb64
      ? ./concatMap

let Optional/toList =
        ../Optional/toList sha256:d78f160c619119ef12389e48a629ce293d69f7624c8d016b7a4767ab400344c4
      ? ../Optional/toList

let unpackOptionals
    : ∀(a : Type) → ∀(l : List (Optional a)) → List a
    = λ(a : Type) → List/concatMap (Optional a) a (Optional/toList a)

let property1 =
      λ(a : Type) → λ(x : a) → assert : unpackOptionals a [ Some x ] ≡ [ x ]

let property2 =
      λ(a : Type) → assert : unpackOptionals a [ None a ] ≡ ([] : List a)

let example0 =
        assert
      : unpackOptionals Natural [ Some 1, None Natural, Some 3 ] ≡ [ 1, 3 ]

let example1 =
        assert
      :   unpackOptionals Natural ([] : List (Optional Natural))
        ≡ ([] : List Natural)

let example2 =
        assert
      :   unpackOptionals Natural [ None Natural, None Natural ]
        ≡ ([] : List Natural)

in  unpackOptionals