list a ::= Nil | Cons a (list a); ;; id x = x; f l n = (case l of True -> id; False -> id end) n; { alt l = case l of Nil -> Cons; Cons a as -> case as of Nil -> Cons; Cons b bs -> Cons end end; }