I'd like to understand better how ocaml's weak pointers operate. First, although it doesn't seem to be specified in the documentation, I assume that weak pointers will *not* be reclaimed (e.g. from a weak hash table) if the program retains some other reference to the object. I.e. the weak pointer must be the last remaining pointer to the object for reclamation to occur. My second question relates specifically to my application. I would like to have a primary cache of objects, and a secondary index into sub-objects referenced from the primary cache. I.e. CacheA references objects of type A; objects of type A reference objects of type B; CacheB references objects of type B. I would like to guarantee that weak references in CacheB are not flushed unless the corresponding reference from CacheA is first flushed. I assume will be the case if a non-weak reference from A to B is maintained. Can anyone verify? Thanks, Warren Harris Metaweb Technologies