packages feed

dhall-1.14.0: Prelude/Optional/concat

{-
Flatten two `Optional` layers into a single `Optional` layer

Examples:

```
./concat Natural ([ [ 1 ] : Optional Natural ] : Optional (Optional Natural))
= [ 1 ] : Optional Natural

./concat Natural ([ [] : Optional Natural ] : Optional (Optional Natural))
= [] : Optional Natural

./concat Natural ([] : Optional (Optional Natural))
= [] : Optional Natural
```
-}
    let concat
        : ∀(a : Type) → Optional (Optional a) → Optional a
        =   λ(a : Type)
          → λ(x : Optional (Optional a))
          → Optional/fold
            (Optional a)
            x
            (Optional a)
            (λ(y : Optional a) → y)
            ([] : Optional a)

in  concat