diff options
-rw-r--r-- | stdlib/weak.ml | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/stdlib/weak.ml b/stdlib/weak.ml index e22e18ce3..666a83c8d 100644 --- a/stdlib/weak.ml +++ b/stdlib/weak.ml @@ -116,7 +116,15 @@ module Make (H : Hashtbl.HashedType) : (S with type data = H.t) = struct Array.fold_right (fold_bucket 0) t.table init ;; - let iter f t = fold (fun d () -> ()) t ();; + let iter f t = + let rec iter_bucket i b = + if i >= length b then () else + match get b i with + | Some v -> f v; iter_bucket (i+1) b + | None -> iter_bucket (i+1) b + in + Array.iter (iter_bucket 0) t.table + ;; let count t = let rec count_bucket i b accu = |