diff options
author | Damien Doligez <damien.doligez-inria.fr> | 2002-07-23 16:10:00 +0000 |
---|---|---|
committer | Damien Doligez <damien.doligez-inria.fr> | 2002-07-23 16:10:00 +0000 |
commit | 794633663d1918a4954ecece421266b6aa282dd8 (patch) | |
tree | bc88636f0780c3ea3b941481119619827d33c736 | |
parent | 6f75d4f557fa30869c198016f1b8159ab009e12f (diff) |
bug Weak.Create(_).iter
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@5033 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-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 = |