On 5/17/12 7:43 PM, Yitzhak Mandelbaum wrote: > Thanks to everyone who responded. FWIW, I found the argument in favor of options most compelling as a general approach. > > Yitzhak > Note that there is a drawback to that approach: loss of polymorphism. # let mmap = Some List.map;; val mmap : (('a -> 'b) -> 'a list -> 'b list) option = Some # let mmap2 = match mmap with | None -> failwith "Nope" | Some x -> x;; val mmap2 : ('_a -> '_b) -> '_a list -> '_b list = I suspect that first-class modules can help here, but I have not really had time to toy with them yet. Cheers, David