@@ -27,8 +27,7 @@ module String = Belt_MapString
27
27
*)
28
28
module Dict = Belt_MapDict
29
29
30
- (* module N = Belt_MapDict
31
- module A = Belt_Array *)
30
+
32
31
33
32
type ('key, 'id ) id = ('key , 'id ) Belt_Id .comparable
34
33
type ('key, 'id ) cmp = ('key , 'id ) Belt_Id .cmp
@@ -37,135 +36,135 @@ type ('k,'v,'id) t = {
37
36
cmp : ('k ,'id) cmp ;
38
37
data : ('k ,'v, 'id ) Dict .t
39
38
}
40
- [@@ bs.deriving abstract ]
41
39
42
40
43
41
44
42
45
- let fromArray (type k ) (type idx ) data ~(id : (k,idx) id ) =
43
+
44
+ let fromArray (type k idx ) data ~(id : (k,idx) id ) =
46
45
let module M = (val id) in
47
46
let cmp = M. cmp in
48
- t ~ cmp ~ data: (Dict. fromArray ~cmp data)
47
+ { cmp; data = (Dict. fromArray ~cmp data)}
49
48
50
49
let remove m x =
51
- let cmp, odata = m |. (cmpGet, dataGet) in
50
+ let { cmp; data = odata} = m in
52
51
let newData = Dict. remove odata x ~cmp in
53
52
if newData == odata then m
54
- else t ~ cmp ~ data: newData
53
+ else { cmp; data = newData}
55
54
56
55
let removeMany m x =
57
- let cmp, odata = m |. (cmpGet, dataGet) in
56
+ let { cmp; data = odata} = m in
58
57
let newData = Dict. removeMany odata x ~cmp in
59
- t ~ cmp ~ data: newData
58
+ { cmp; data = newData}
60
59
61
60
let set m key d =
62
- let cmp = cmpGet m in
63
- t ~ cmp ~ data: ( Dict. set ~cmp (dataGet m) key d)
61
+ let cmp = m.cmp in
62
+ { cmp; data = Dict. set ~cmp m.data key d}
64
63
65
64
let mergeMany m e =
66
- let cmp = cmpGet m in
67
- t ~ cmp ~ data: ( Dict. mergeMany ~cmp (dataGet m) e)
65
+ let cmp = m.cmp in
66
+ { cmp; data = Dict. mergeMany ~cmp m.data e}
68
67
69
68
let updateU m key f =
70
- let cmp = cmpGet m in
71
- t ~ cmp ~ data: ( Dict. updateU ~cmp (dataGet m) key f )
69
+ let cmp = m.cmp in
70
+ { cmp; data = Dict. updateU ~cmp m.data key f }
72
71
let update m key f = updateU m key (fun [@bs ] a -> f a )
73
72
let split m x =
74
- let cmp = cmpGet m in
75
- let (l,r),b = Dict. split ~cmp (dataGet m) x in
76
- (t ~ cmp ~ data: l, t ~ cmp ~ data: r ), b
73
+ let cmp = m.cmp in
74
+ let (l,r),b = Dict. split ~cmp m.data x in
75
+ ({ cmp; data= l}, { cmp; data= r} ), b
77
76
78
77
let mergeU s1 s2 f =
79
- let cmp = cmpGet s1 in
80
- t ~ cmp ~ data: (Dict. mergeU ~cmp (dataGet s1 ) (dataGet s2 ) f)
78
+ let cmp = s1.cmp in
79
+ { cmp; data= (Dict. mergeU ~cmp (s1.data ) (s2.data ) f)}
81
80
82
81
let merge s1 s2 f =
83
82
mergeU s1 s2 (fun [@bs ] a b c -> f a b c)
84
83
85
- let make (type key ) ( type idx ) ~(id : (key, idx) id ) =
84
+ let make (type key idx ) ~(id : (key, idx) id ) =
86
85
let module M = (val id) in
87
- t ~cmp: M. cmp ~ data: Dict. empty
86
+ {cmp = M. cmp; data = Dict. empty}
88
87
89
88
let isEmpty map =
90
- Dict. isEmpty (dataGet map)
89
+ Dict. isEmpty map.data
91
90
92
- let findFirstByU m f = Dict. findFirstByU (dataGet m) f
91
+ let findFirstByU m f = Dict. findFirstByU m.data f
93
92
let findFirstBy m f = findFirstByU m (fun [@bs ] a b -> f a b)
94
- let forEachU m f = Dict. forEachU (dataGet m) f
93
+ let forEachU m f = Dict. forEachU m.data f
95
94
let forEach m f = forEachU m (fun [@bs ] a b -> f a b)
96
- let reduceU m acc f = Dict. reduceU (dataGet m) acc f
95
+ let reduceU m acc f = Dict. reduceU m.data acc f
97
96
let reduce m acc f = reduceU m acc (fun[@ bs] a b c -> f a b c )
98
- let everyU m f = Dict. everyU (dataGet m) f
97
+ let everyU m f = Dict. everyU m.data f
99
98
let every m f = everyU m (fun [@bs ] a b -> f a b)
100
- let someU m f = Dict. someU (dataGet m) f
99
+ let someU m f = Dict. someU m.data f
101
100
let some m f = someU m (fun[@ bs] a b -> f a b)
102
101
let keepU m f =
103
- t ~ cmp: (cmpGet m) ~ data: (Dict. keepU (dataGet m) f)
102
+ { cmp = m.cmp; data = (Dict. keepU m.data f)}
104
103
let keep m f = keepU m (fun [@bs ] a b -> f a b)
105
104
106
105
let partitionU m p =
107
- let cmp = cmpGet m in
108
- let l,r = m |. dataGet |. Dict. partitionU p in
109
- t ~ cmp ~ data: l, t ~ cmp ~ data: r
106
+ let cmp = m.cmp in
107
+ let l,r = m . data |. Dict. partitionU p in
108
+ { cmp; data= l}, { cmp; data= r}
110
109
let partition m p = partitionU m (fun [@bs ] a b -> p a b)
111
110
112
111
let mapU m f =
113
- t ~ cmp: (cmpGet m) ~ data: ( Dict. mapU (dataGet m) f)
112
+ { cmp = m.cmp; data = Dict. mapU m.data f}
114
113
let map m f = mapU m (fun [@bs ] a -> f a)
115
114
let mapWithKeyU m f =
116
- t ~ cmp: (cmpGet m) ~ data: ( Dict. mapWithKeyU (dataGet m) f)
115
+ { cmp = m.cmp; data = Dict. mapWithKeyU m.data f}
117
116
let mapWithKey m f = mapWithKeyU m (fun [@bs ] a b -> f a b)
118
- let size map = Dict. size (dataGet map)
119
- let toList map = Dict. toList (dataGet map)
120
- let toArray m = Dict. toArray (dataGet m)
121
- let keysToArray m = Dict. keysToArray (dataGet m)
122
- let valuesToArray m = Dict. valuesToArray (dataGet m)
123
- let minKey m = Dict. minKey (dataGet m)
124
- let minKeyUndefined m = Dict. minKeyUndefined (dataGet m)
125
- let maxKey m = Dict. maxKey (dataGet m)
126
- let maxKeyUndefined m = Dict. maxKeyUndefined (dataGet m)
127
- let minimum m = Dict. minimum (dataGet m)
128
- let minUndefined m = Dict. minUndefined (dataGet m)
129
- let maximum m = Dict. maximum (dataGet m)
130
- let maxUndefined m = Dict. maxUndefined (dataGet m)
117
+ let size map = Dict. size map.data
118
+ let toList map = Dict. toList map.data
119
+ let toArray m = Dict. toArray m.data
120
+ let keysToArray m = Dict. keysToArray m.data
121
+ let valuesToArray m = Dict. valuesToArray m.data
122
+ let minKey m = Dict. minKey m.data
123
+ let minKeyUndefined m = Dict. minKeyUndefined m.data
124
+ let maxKey m = Dict. maxKey m.data
125
+ let maxKeyUndefined m = Dict. maxKeyUndefined m.data
126
+ let minimum m = Dict. minimum m.data
127
+ let minUndefined m = Dict. minUndefined m.data
128
+ let maximum m = Dict. maximum m.data
129
+ let maxUndefined m = Dict. maxUndefined m.data
131
130
132
131
let get map x =
133
- Dict. get ~cmp: (cmpGet map) (dataGet map) x
132
+ Dict. get ~cmp: map.cmp map.data x
134
133
135
134
let getUndefined map x =
136
- Dict. getUndefined ~cmp: (cmpGet map) (dataGet map) x
135
+ Dict. getUndefined ~cmp: map.cmp map.data x
137
136
138
137
let getWithDefault map x def =
139
- Dict. getWithDefault ~cmp: (cmpGet map) (dataGet map) x def
138
+ Dict. getWithDefault ~cmp: map.cmp map.data x def
140
139
141
140
let getExn map x =
142
- Dict. getExn ~cmp: (cmpGet map) (dataGet map) x
141
+ Dict. getExn ~cmp: map.cmp map.data x
143
142
144
143
let has map x =
145
- Dict. has ~cmp: (cmpGet map) (dataGet map) x
144
+ Dict. has ~cmp: map.cmp map.data x
146
145
147
146
let checkInvariantInternal m =
148
- Dict. checkInvariantInternal (dataGet m)
147
+ Dict. checkInvariantInternal m.data
149
148
150
149
let eqU m1 m2 veq =
151
- Dict. eqU ~kcmp: (cmpGet m1) ~veq (dataGet m1) (dataGet m2)
150
+ Dict. eqU ~kcmp: m1.cmp ~veq m1.data m2.data
152
151
let eq m1 m2 veq = eqU m1 m2 (fun[@ bs] a b -> veq a b)
153
152
154
153
let cmpU m1 m2 vcmp =
155
- Dict. cmpU ~kcmp: (cmpGet m1) ~vcmp (dataGet m1) (dataGet m2)
154
+ Dict. cmpU ~kcmp: m1.cmp ~vcmp m1.data m2.data
156
155
let cmp m1 m2 vcmp = cmpU m1 m2 (fun [@bs ] a b -> vcmp a b)
157
156
158
- let getData = dataGet
157
+ let getData m = m.data
159
158
160
- let getId (type key ) ( type identity ) (m : (key,_,identity) t ) : (key, identity) id =
159
+ let getId (type key identity ) (m : (key,_,identity) t ) : (key, identity) id =
161
160
let module T = struct
162
161
type nonrec identity = identity
163
162
type nonrec t = key
164
- let cmp = cmpGet m
163
+ let cmp = m.cmp
165
164
end in
166
165
(module T )
167
166
168
- let packIdData (type key ) ( type idx ) ~(id : (key, idx) id ) ~data =
167
+ let packIdData (type key idx ) ~(id : (key, idx) id ) ~data =
169
168
let module M = (val id) in
170
- t ~ cmp: M. cmp ~ data
169
+ { cmp = M. cmp ; data}
171
170
0 commit comments