[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

introspection



IMHO, it is also important to have a query mechanism to know
the comparison and hash criteria of a given hash table.  
Something like hash-table-type which returns a clue so that
you can know at least the given hash table uses which one of 
system-builtin criteria (e.g. eq?, eqv?, equal?, string, string-ci, ...)
or some user-defined custom functions.  A function to query
a hash table's comparison/hash functions may be acceptable 
if the default hashtables (created by make-symbol-hash-table etc.) 
are guaranteed to return functions which are eq? to the known 
functions (e.g. make-string-hash-table to return string=? as comparison 
and string-hash as hash).

It is necessary when you want to get some external representation
of a hash table, for example, a marshalizer to send a Scheme
structure over the network.  Such a function probably can't deal
with hashtables with arbitrary comparison/hash functions, but it
is still pretty useful if it deals with standard hashtables.   
Without the query mechanism, such a function can do nothing but 
abort when it sees a hash table.  hash-table->list won't help.

--shiro