From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id KAA27323; Thu, 7 Mar 2002 10:13:19 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id KAA26718 for caml-list@pauillac.inria.fr; Thu, 7 Mar 2002 10:13:18 +0100 (MET) Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id LAA03745 for ; Wed, 6 Mar 2002 11:09:23 +0100 (MET) Received: from julie.univ-savoie.fr (univax.univ-savoie.fr [193.48.120.32]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id g26A9Mv07169 for ; Wed, 6 Mar 2002 11:09:22 +0100 (MET) Received: from post.bourget.univ-savoie.fr (post.bourget.univ-savoie.fr [193.48.120.73]) by julie.univ-savoie.fr (8.9.3/jtpda-5.3.3) with ESMTP id LAA17452 ; Wed, 6 Mar 2002 11:09:21 +0100 (CET) Received: from univ-savoie.fr (www.lama.univ-savoie.fr [193.48.123.134]) by post.bourget.univ-savoie.fr (8.12.0.Beta7/jtpda-5.4) with ESMTP id g26A9HGE006991 ; Wed, 6 Mar 2002 11:09:18 +0100 Message-ID: <3C85EAD1.8316BE37@univ-savoie.fr> Date: Wed, 06 Mar 2002 11:09:21 +0100 From: Christophe Raffalli X-Mailer: Mozilla 4.78 [fr] (X11; U; Linux 2.4.8-26mdksmp i686) X-Accept-Language: en MIME-Version: 1.0 To: Dave Mason CC: Charles Martin , caml-list@inria.fr Subject: Re: [Caml-list] Weak hash table References: <200203052224.g25MOFF16528@sarg.ryerson.ca> Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Dave Mason a écrit : > > A while ago I bugged Xavier about this. He agreed it would be nice to > have weak hash tables, so if anyone volunteered an implementation, I > suspect it would quickly make its way into the standard library. > > I haven't thought hard about it, but I think it needs some additional > hooks in the garbage collector. (Without even *considering* the whole > heirarchy of weakness in Java!) > > ../Dave If you want key or value weak hashtable (that is entry are kept in the hash table is the key of the value are pointed from somewhere outside the hashtable), it can be done with just the Weak module of Caml (you can almost do it by regexp query replace in hashtbl.ml). If you just want value (resp. key) weak hashtable (that is entry are kept in the hash table if the value is pointed from somewhere outside the hashtable), It is possible also, you just need to do a shallow copy of the key (resp. the value) before insertion in the table. If you do not want to loose a little memory, you need help from the GC. Anyway if your key are integers or floats both are equivalent ! if you key are strings possibly long, the cost of shallow copy may be a problem. Just one trouble: if you want hashtabl with unique key all this is true. If you want hashtable with multiple key (as in module Hashtbl) you need a weak array of weak array ... it starts to be a bit complex and may be help from the GC would be useful to get a nicer code. -- Christophe Raffalli Université de Savoie Batiment Le Chablais, bureau 21 73376 Le Bourget-du-Lac Cedex tél: (33) 4 79 75 81 03 fax: (33) 4 79 75 87 42 mail: Christophe.Raffalli@univ-savoie.fr www: http://www.lama.univ-savoie.fr/~RAFFALLI ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners