Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.Sign up
GitHub is where the world builds software
Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world.
NET.HEXAPODIA.HASHTABLES Generic hash table implementation. This implementation is in the public domain. Written by Ingvar Mattsson <firstname.lastname@example.org>. This package defines four generic functions and two normal functions. The non-generic function MAKE-GENERIC-HASH-TABLE is used for hash table creation. (make-generic-hashtable (:test 'eql) (:size 17)) If this function is fed the *symbols* EQ EQL EQUAL or EQUALP as test it will create a generic hash table with that as an equality test and SXHASH as the hash function. NOTE: Using EQ or EQL as the test designator is risky and should be avoided. In general, for the built-in test designators, use the function instead of the symbol. This will give you a built-in hash table. If this function is fed the *functions* EQ EQL EQUAL or EQUALP it will create a normal (built-in) hash table with that as a test function. (register-test-designator <nickname> <hash fn> <equal fn>) Register a new generic hash function with <nickname> as the relevant :test parameter. The generic functions are: (hashref <key> <table> &optnonal (default nil)) This function does essentially the same thing as GETHASH. ((setf hashref) <value> <key> <table> &optional ignore) For (setf (hashref ...) ...) (map-generic-hash <fn> <table>) As MAPHASH (hashrem <key> <table>) As REMHASH These functions dispatch somewhat differently depending on if they're fed a generic hash table or a built-in hash table. For benchmarking, just load "benchtests.lisp", this will loop through the number 0 to 1000 (and 100000) and feed them into a hash table, then generating a report of *STANDARD-OUTPUT*.