@@ -267,10 +267,10 @@ module SparseVector: AbstractVector =
267267
268268 *)
269269 let map_f_preserves_zero f v = (* map for functions f such that f 0 = 0 since f won't be applied to zero values. See also map *)
270- let entries = List. filter_map (
270+ let entries' = List. filter_map (
271271 fun (idx , value ) -> let new_val = f value in
272272 if new_val = A. zero then None else Some (idx, new_val)) v.entries in
273- {entries; len = v.len }
273+ {v with entries = entries' }
274274
275275 let map_f_preserves_zero f v = Timing. wrap " map_f_preserves_zero" (map_f_preserves_zero f) v
276276
@@ -281,10 +281,10 @@ module SparseVector: AbstractVector =
281281
282282 *)
283283 let mapi_f_preserves_zero f v =
284- let entries = List. filter_map (
284+ let entries' = List. filter_map (
285285 fun (idx , value ) -> let new_val = f idx value in
286286 if new_val = A. zero then None else Some (idx, new_val)) v.entries in
287- {entries; len = v.len }
287+ {v with entries = entries' }
288288
289289 (* *
290290 [map2_f_preserves_zero f v v'] returns the mapping of [v] and [v'] specified by [f].
@@ -380,7 +380,7 @@ module SparseVector: AbstractVector =
380380 {entries; len = v.len}
381381
382382 let rev v =
383- let entries = List. rev @@ List. map (fun (idx , value ) -> (v.len - 1 - idx, value)) v.entries in
383+ let entries = List. rev_map (fun (idx , value ) -> (v.len - 1 - idx, value)) v.entries in
384384 {entries; len = v.len}
385385
386386 let append v v' =
0 commit comments