モジュール関連

gosh> (current-module)
#<module user>
gosh> (module-precedence-list (current-module))
(#<module user> #<module gauche.gf> #<module gauche> #<module scheme> #<module null>)

Builtin Module: null
このモジュールはR5RSで述べられている"null environment"に相当します。 R5RSの構文要素への束縛だけを含んだモジュールです。
Builtin Module: scheme
このモジュールはnullモジュール内の束縛全てに加えて、 R5RSで定義されている全ての手続きの束縛を含みます。
Builtin Module: gauche
このモジュールはschemeモジュール内の全ての束縛に加え、 Gaucheの組込み手続きや構文が含まれています。
Builtin Module: user
このモジュールはユーザコードがコンパイルされる既定のモジュールです。 gaucheモジュール内の全ての束縛がインポートされています。

http://practical-scheme.net/gauche/man/gauche-refj_32.html

現時点では以下の対応関係になっている。
(find-module 'null) == (null-environment 5)
(find-module 'scheme) == (scheme-report-environment 5)
(find-module 'user) == (interaction-environment)

(null-environment 5)は、R5RSで規定されている単なる構文的な 束縛を含むnullモジュールを返します。
(scheme-report-environment 5)は、R5RSで規定されている 構文的な束縛と手続きの束縛を含むschemeモジュールを返します。
(interaction-environment)は、全てのGaucheのビルトインと ユーザ定義の全てを含んだuserモジュールを返します。

http://practical-scheme.net/gauche/man/gauche-refj_56.html

それぞれの中身
R5RSも小さい仕様とはいえ200以上の定義が入っている。

gosh> (define ls (compose hash-table-keys module-table find-module))
ls
gosh> (ls 'null)
(unquote if let* let-syntax or delay quasiquote define let lambda define-syntax begin and case do quote unquote-splicing set! letrec letrec-syntax cond)
gosh> (length (ls 'scheme))
219
gosh> (length (ls 'gauche))
892
gosh> (ls 'gauche.gf)
()
gosh> (ls 'user)
(ls *argv* *program-name*)

見慣れないgauche.gfはGenericFunction用。

Gauche:GenericFunctionとModule
妥協策として、上記の「見えないはずのメソッドが呼ばれてしまう」現象に 目をつむるならば、implicitに作られたgeneric functionは 常に全てのモジュールが継承しているモジュール中に束縛が作られる、 という方法はあります。今のGaucheにある、gauche.gfというモジュールは そのつもりで作ったものです。例えば、 (define-method foo ...)した時点でfooが見えなければ、gauche.gf中に fooという名でgeneric functionを束縛し、それにメソッドを追加します。 gauche.gfは通常のモジュールは全て継承しているので、自動的にfooは 全てのモジュールから見えるようになります

http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AGenericFunction%E3%81%A8Module

いつも忘れるグローバル変数のリストアップ

(apply append (map (compose hash-table-keys module-table) (all-modules)))

(module-precedence-list (current-module))では一部もれ(継承ではなくimport経由のもの等)があるので(all-modules)を使う点に注意。
なお、(use srfi-1)をすればappend-mapが使える。

(append-map (compose hash-table-keys module-table) (all-modules))