The srfi-69 implementation that comes with Guile doesn't function properly when some non-false #:weak argument is provided. The problems seems to be that it tries to use handles, which are only available for non-weak hash-tables. scheme@(guile-user)> (import (srfi :69)) scheme@(guile-user)> (define ht (make-hash-table eq? hashq #:weak 'key)) scheme@(guile-user)> (hash-table-set! ht 10 10) ERROR: In procedure hashx-create-handle!: In procedure scm_hash_fn_create_handle_x: Wrong type argument in position 1 (expecting hash-table): # Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. scheme@(guile-user) [1]> Regards, Jessica