List.Smart
val map : ('a -> 'a) -> 'a list -> 'a list
Smart.map f [a1...an] = List.map f [a1...an] but if for all i f ai == ai, then Smart.map f l == l
Smart.map f [a1...an] = List.map f [a1...an]
f ai == ai
Smart.map f l == l