A common next step after mapping a function across a list is to filter out some unwanted results. These two steps can be combined in one by using the mapPartial function of type ('a -> 'b option) -> (('a list) -> ('b list)).
fun mapPartial f [] = []
| mapPartial f (h::t) =
case f h of
NONE => mapPartial f t
| SOME v => v :: mapPartial f t;