datatype olist (int) = | nil (100) of () | {x,y:nat | x <= y} cons (x) of (int x, olist (y)) fun print_olist {a:nat} (xs: olist a): void = case+ xs of | nil () => print_newline() | cons(x, xs) => begin printf("%d ", @(x)); print_olist(xs) end implement main() = let val a = cons(1, cons(2, cons(10, cons(12, nil)))) val () = print_olist(a) in () end