Guile happily compiles the following module: (define-module (test)) (define (foo) #t) (export (foo))
This exports foo as (), because (foo) = (foo . ()) and export treats pairs as renaming. If you use this module, readline breaks because it looks up the module's exported symbols and then tries to call (symbol->string '()): scheme@(guile-user)> (use-modules (test)) scheme@(guile-user)> x<TAB> While reading expression: ERROR: In procedure symbol->string: Wrong type argument in position 1 (expecting symbol): ()