type 'a list = Nil | Cons of 'a * 'a list type unit = Unit let nil = fun ['a] (x : unit) => match x with Unit => Nil['a] end let forall 'a ornament nil ['a] : unit -> 'a list