#R7RSスクリプトを load すると、カレントモジュール(或いは :environment で渡したモジュール)ではなく r7rs.user にロードされるのが罠な気がしています。オプション無しで起動したREPLからロードした場合、ロードした定義がそのままでは見えないので。REPLの場合は予め -r7 オプションを付けて起動するか、後から (select-module r7rs.user) (import (gauche interactive)) すればいいですが、知らないと引っかかります。指定したモジュールに読み込んでくれないのもちょっと気になります。
#ついでにこれ調べてて思ったんですが、user#import が user モジュールから export されていてもいいんじゃないかと思いました。
#-r7 付けても -e に渡した式は user モジュールで評価されるんですね。
#例えば、R7RSプログラムのテストをGaucheで書く場合、
#(use gauche.test)
(test-start "foo")
(load "./foo.scm")
(select-module r7rs.user)
(import (gauche base)
(gauche test))
(test-module 'r7rs.user)
...
#みたいな感じになるんでしょうか。