This problem is with the documentation, not with Guile, I think.
Presumably hashq uses the address of the keyword, which can change if it
falls into disuse. Some documentation like the following is required:
"Guile reserves the right to use internal addresses in hash functions.
This means that a hash value can change. For example, if a keyword
becomes unused, and later reused, it can produce a new hash value. This
is normally only an issue during development, in which case a list of
keywords can be bound to a convenience variable."
Alex.
> -------------------------- Test program
> #! /bin/sh
> exec guile -s $0 $*
> !#
>
> (display (hashq 'position 5)) (newline)
> (display (hashq 'fluff 5)) (newline)
>
> (define A 'position)
>
> (display (hashq 'position 5)) (newline)
>
> -------------------------- Output
> [pilot]$ bugtest
> 0
> 1
> 3