# HG changeset patch # User Matthias Görgens # Date 1265126831 0 # Node ID 452da349aea2e41bcfb19af353850c542eaa799c # Parent c3c6244bb7d6387caed5c200ead5b20fab27485f Adds `join' to the Opt module `join' collapses (Some (Some a)) down to (Some a), and gives Nothing otherwise. Signed-off-by: Matthias Görgens diff -r c3c6244bb7d6 -r 452da349aea2 stdext/opt.ml --- a/stdext/opt.ml +++ b/stdext/opt.ml @@ -54,3 +54,8 @@ | None -> accu let cat_options a = List.map unbox (List.filter is_boxed a) + +let join = function + | Some (Some a) -> Some a + | _ -> None + diff -r c3c6244bb7d6 -r 452da349aea2 stdext/opt.mli --- a/stdext/opt.mli +++ b/stdext/opt.mli @@ -20,3 +20,4 @@ val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b option -> 'a val fold_right : ('a -> 'b -> 'b) -> 'a option -> 'b -> 'b val cat_options : 'a option list -> 'a list +val join : ('a option) option -> 'a option