54 lines
1.5 KiB
Plaintext
54 lines
1.5 KiB
Plaintext
type foobar = (int, int) map
|
|
|
|
let empty_map : foobar = Map.empty
|
|
|
|
let map1 : foobar =
|
|
Map.literal [(144,23); (51,23); (42,23); (120,23); (421,23)]
|
|
|
|
let map2 : foobar = Map.literal [(23,0); (42,0)]
|
|
|
|
let set_2 (n: int) (m: foobar) : foobar = Map.update 23 (Some n) m
|
|
|
|
let set_ (t: int * foobar) : foobar = set_2 t.0 t.1
|
|
|
|
let add (n,m: int * foobar) : foobar = Map.add 23 n m
|
|
|
|
let rm (m: foobar) : foobar = Map.remove 42 m
|
|
|
|
(* Dummy test so that we can add the same test for PascaLIGO *)
|
|
let patch_ (m: foobar) : foobar = Map.literal [(0,5); (1,6); (2,7)]
|
|
|
|
(* Second dummy test, see above *)
|
|
let patch_empty (m: foobar) : foobar = Map.literal [(0,0); (1,1); (2,2)]
|
|
|
|
(* Third dummy test, see above *)
|
|
let patch_deep (m: foobar * nat) : foobar * nat =
|
|
Map.literal [(0,0); (1,9); (2,2)], 10n
|
|
|
|
let size_ (m: foobar) : nat = Map.size m
|
|
|
|
let gf (m: foobar) : int = Map.find 23 m
|
|
|
|
let get (m: foobar) : int option = Map.find_opt 42 m
|
|
let get_ (m: foobar) : int option = Map.find_opt 42 m
|
|
|
|
let mem (k,m: int * foobar) : bool = Map.mem k m
|
|
|
|
let iter_op (m : foobar) : unit =
|
|
let assert_eq = fun (i: int * int) -> assert (i.0 = i.1)
|
|
in Map.iter assert_eq m
|
|
|
|
let map_op (m : foobar) : foobar =
|
|
let increment = fun (i: int * int) -> i.1 + 1
|
|
in Map.map increment m
|
|
|
|
let fold_op (m : foobar) : foobar =
|
|
let aggregate = fun (i: int * (int * int)) -> i.0 + i.1.0 + i.1.1
|
|
in Map.fold aggregate m 10
|
|
|
|
let deep_op (m: foobar) : foobar =
|
|
let coco = 0,m in
|
|
let coco = 0, Map.remove 42 coco.1 in
|
|
let coco = 0, Map.update 32 (Some 16) coco.1
|
|
in coco.1
|