** Hash Functions**

Not all hash functions are good; a good one should be easy to compute and should ``randomize'' symbols into different hash locations, not lump them into only a few hash values.

Some examples of good hash functions:

- Treat the symbol name as an integer, square it, and take some
bits out of the middle.
- Treat the symbol name as an integer and find the remainder
of the name modulo
`p`, where`p`is prime.

A typical re-hash function is simply to add 1 to the previous hash function value.