## Full example

    -- source: https://github.com/dhall-lang/dhall-lang/blob/master/Prelude/Optional/head.dhall

    {-
    Returns the first non-empty `Optional` value in a `List`
    -}
    let head
        : ∀(a : Type) → List (Optional a) → Optional a
        = λ(a : Type) →
          λ(xs : List (Optional a)) →
            List/fold
              (Optional a)
              xs
              (Optional a)
              ( λ(l : Optional a) →
                λ(r : Optional a) →
                  merge { Some = λ(x : a) → Some x, None = r } l
              )
              (None a)

    let example0 = assert : head Natural [ None Natural, Some 1, Some 2 ] ≡ Some 1

    let example1 =
          assert : head Natural [ None Natural, None Natural ] ≡ None Natural

    let example2 =
          assert : head Natural ([] : List (Optional Natural)) ≡ None Natural

    in  head