(************************************************************ customizedMap.ml Created : Thu Dec 26 00:51:28 2002 Last modified: Thu Dec 26 01:01:56 2002 Compile: ocamlopt.opt customizedMap.ml -o customizedMap # FTP Directory: sources/ocaml # ************************************************************) (** @author Takashi Masuyama *) module MyMap = struct module Make = functor (Ord : Map.OrderedType) -> struct module M = Map.Make(Ord) type 'a t = 'a M.t let empty = M.empty let find = M.find let add = M.add let iter = M.iter let fold = M.fold (** 重複するキーがある場合は m2 のものを優先する *) let mem = M.mem let union m1 m2 = fold M.add m2 m1 end end module MM = MyMap.Make(String) let print m = MM.iter (fun k v -> Printf.printf "%s\n\t%s\n" k v) m let _ = let l1 = [("tak", "hogera")] in let l2 = [("tak", "mamewo")] in let create_map lst = List.fold_right (fun (k,v) -> MM.add k v) lst MM.empty in let m1 = create_map l1 in let m2 = create_map l2 in print_endline "****** m1"; print m1; print_endline "****** m2"; print m2; print_endline "****** MM.union m1 m2"; print (MM.union m1 m2)