Hi David,

Because the arguments passed to functions could be considered as references (same memory space), IMHO, if you respect the scope priority it should work.

For instance:

let () =
    let h = Hashtbl.create 7 in
    let f k v = Hashtbl.remove h k in
        Hashtbl.iter f h

Julien.

2008/5/11 David MENTRE <dmentre@linux-france.org>:
Hello,

Probably a newbie question but anyway: is it allowed to do a
Hashtbl.remove while doing a Hashtbl.iter on the same hash table?

More precisely, at one point while doing a "Hashtbl.iter f h" my
function "f" is called with something like "f k v". Can I do a
"Hashtbl.remove h k" within the body of "f"?

Sincerely yours,
david
--
GPG/PGP key: A3AD7A2A David MENTRE <dmentre@linux-france.org>
 5996 CC46 4612 9CA4 3562  D7AC 6C67 9E96 A3AD 7A2A

_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs



--
Julien Peeters
Student in engineering
Institut de Formation des Ingénieurs de Paris-Sud
Orsay, France
Website: http://www.dedilabs.com/~jpeeters