The 'hash' function computes and returns an integer index for a given symbol 'name' and a given size of hash table 'table-size'. The intention is for 'hash' to be used with tables made by make-array and accessed by aref.
(hash "zzzz" 1000) ; returns index 322
(hash "ZZZZ" 1000) ; returns index 626
(hash 'ZZZZ 1000) ; returns index 626
(hash "hiho" 1000) ; returns index 519
(hash 'hiho 1000) ; returns index 143
(hash "abcd" 1000) ; returns index 72
;; create a function to look inside *OBARRAY* and
;; look for a specific symbol - returns a list
(defun lookin (sym)
(aref *obarray*
(hash sym (length *obarray*))))
(lookin 'caar) ; returns the hash table entry
; (ZEROP CDDDDR CAAR HASH)
Note: This is a useful function for creating and accessing tables. It is also useful for looking inside of XLISP's own symbol table *obarray*.
See the
hash
function in the