let filter_option list = let rec do_filter rlist = function | [] -> List.rev rlist | None::tl -> do_filter rlist tl | (Some(v))::tl -> do_filter (v::rlist) tl in do_filter [] list