Hi Marc, > I have attached an improved version of the HAMT module to this email.
How about terminology: "delete" vs. "remove"? In C++ the verb "delete" is more or less the same as "free": It means "deallocate" and "free memory". Likewise in some C APIs, e.g. pthread_key_delete. In this sense, 'hamt_delete' is triggering the wrong associations. How about renaming 'hamt_remove'? Deleting an entry from a hash table or HAMT does not always mean to delete the object that the entry references. The Java collections [1], C# collections [2], Python collections [3] all use the verb "remove". Yes, we still have hash_delete (in module 'hash') and 'argz_delete' (in module 'argz'); these are very old modules. Bruno [1] https://docs.oracle.com/javase/7/docs/api/java/util/Set.html [2] https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1 [3] https://docs.python.org/3/library/stdtypes.html#set