61 lines
1.6 KiB
Plaintext
61 lines
1.6 KiB
Plaintext
type foobar = map (int, int);
|
|
|
|
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_ = (n: int, m: foobar) : foobar => Map.update (23, Some (n), m);
|
|
|
|
let add = (n: int, m: 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 get = (m: foobar): option(int) => Map.find_opt (42, m);
|
|
let get_ = (m: foobar): option(int) => Map.find_opt(42, m);
|
|
|
|
let mem = (km: (int, foobar)): bool => Map.mem (km[0], km[1]);
|
|
|
|
let iter_op = (m: foobar): unit => {
|
|
let assert_eq = (i: int, j: int) => assert (i == j);
|
|
Map.iter (assert_eq, m);
|
|
};
|
|
|
|
let map_op = (m: foobar) : foobar => {
|
|
let increment = (z: int, j: int) => j + 1;
|
|
Map.map (increment, m);
|
|
};
|
|
|
|
let fold_op = (m: foobar): foobar => {
|
|
let aggregate = (i: int, j: (int, int)) => i + j[0] + j[1];
|
|
Map.fold (aggregate, m, 10);
|
|
};
|
|
|
|
let deep_op = (m: foobar) : foobar => {
|
|
let coco = (0, m);
|
|
let coco = (0, Map.remove (42, coco[1]));
|
|
let coco = (0, Map.update (32, Some (16), coco[1]));
|
|
coco[1];
|
|
};
|