module OmitType;
type List A :=
| nil
| cons A (List A);
map {A B} (f : A → B) : List A → List B
| nil := nil
| (cons h t) := cons (f h) (map f t);