Re: [Scheme-reports] Seeking review of sets and hash tables proposals
Per Bothner 25 May 2013 19:04 UTC
On 05/25/2013 09:45 AM, Per Bothner wrote:
> A 'comparator' data type might be still be worth considering.
> I could work well with a small library of utility routines.
> For example (ascending PROJ) and (descending PROJ) take a one-argument
> "projection" function that is applied to the elements to be
> compared. Another useful utility (useful for sorting)
> takes a list of comparators, where the first element is
> the primary key, the second the secondary key, etc.
>
> Anyway, this is all very hand-wavy ...
Another idea, focusing for now just on equivalance functions:
If the language supports 'procedure properties' then one
way to "bundle" an equivalance function with a hash function
is to make the latter a property of the former. For example,
using Kawa's syntax:
http://www.gnu.org/software/kawa/Procedure-properties.html
One could define:
(define-procedure my-eq?
equivalence-hash: (lambda (obj) (whatever-hash ... obj))
(lambda (obj1 obj2) (whatever-eq ... obj1 obj2))
Then as user can do:
(make-hash-table my-eq?)
and the implementation can extract the hash function as:
(procedure-property equivalence 'equivalence-hash)
--
--Per Bothner
per@bothner.com http://per.bothner.com/
_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports