{-
Convert an `Optional` value into the equivalent `List`
-}
let toList
    : ∀(a : Type) → Optional a → List a
    =   λ(a : Type)
      → λ(o : Optional a)
      → Optional/fold a o (List a) (λ(x : a) → [ x ] : List a) ([] : List a)

let example0 = assert : toList Natural (Some 1) ≡ [ 1 ]

let example1 = assert : toList Natural (None Natural) ≡ ([] : List Natural)

in  toList
