adamc@238: datatype list a = Nil | Cons of a * list a adamc@238: adamc@242: fun append (t ::: Type) (ls1 : list t) (ls2 : list t) : list t = 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@239: val rec ones = fn () => Cons (1, ones ())