RosettaCodeData/Task/Associative-array-Merging/OCaml/associative-array-merging-3.ml

26 lines
560 B
OCaml

module StringMap = Map.Make(String) ;;
let print_map = StringMap.iter print_pair ;;
let map_merge (base : ty StringMap.t) (add : ty StringMap.t) : ty StringMap.t =
StringMap.union (fun key v1 v2 -> Some v2) base add
;;
let m1 = StringMap.(
empty
|> add "name" (TString "Rocket Skates")
|> add "price" (TFloat 12.75)
|> add "color" (TString "yellow")
) ;;
let m2 = StringMap.(
empty
|> add "price" (TFloat 15.25)
|> add "color" (TString "red")
|> add "year" (TInt 1974)
) ;;
let m' = map_merge m1 m2 ;;
print_map m' ;;