On 05/04/2013 10:47 AM, "Noah Lavine" wrote: > > Hello, > > I haven't thought about this whole email, but I disagree with this part of your response: > > On Thu, Apr 4, 2013 at 8:17 PM, Daniel Hartwig wrote: >> >> Hash tables are not just a set of (key, value) pairs, they also >> include the particular hash and equality procedures that are used with >> them. These could be arbitrary procedures, and procedures can not >> generally be converted to a string and back again, so, by extension, >> neither can hash tables even if you could do that for their content. > > > Although hash tables in general do include arbitrary procedures, in Guile's implementation there are only three to choose from, so it should be possible to represent them in syntax. > I think you miss the hashx procedures. > For exactly this reason, I believe that actually "hash table" is a bad name for the data structure. I think of Guile's hash tables as a generic dictionary structure with average O(1)-time lookup, insertion and deletion. Where do you get your definition of 'hash table' that the guile type does not apply? > In the rare case, when dictionary lookups are time- or space-critical and must be optimized, *then* it's worth it to design custom hash functions and implement hash tables from vectors and similar things. That's what the current data type is anyway, and can be used with custom hash? I'm not sure I follow the distinctions you are making.