adamc@238: datatype list a = Nil | Cons of a * list a adamc@238: adamc@238: val rec append : t ::: Type -> list t -> list t -> list t = fn t ::: Type => fn ls1 => fn ls2 => adamc@238: case ls1 of adamc@238: Nil => ls2 adamc@238: | Cons (h, t) => Cons (h, append t ls2) adamc@238: adamc@238: (*val rec ones : list int = Cons (1, ones)*) adamc@238: val rec ones : unit -> list int = fn () => Cons (1, ones ())