gauche.base
- Gauche組み込み関数のインポート ¶このモジュールはGaucheの組み込み手続きと構文をexportし、
gauche
モジュールを継承しない他のモジュールからもimportして
Gaucheの組み込み機能を使えるようにします。
gauche
モジュールで見えるすべての束縛のうち、import
を除いたものは
そのままexportされます。import
はR7RSのimport
との
衝突を避けるためgauche:import
としてexportされます。
このモジュールはまた、
全てのキーワード(gauche.keyword
モジュールにある
束縛)もexportします。これで、Gauche関連のモジュールを継承しなくても
gauche.base
をimportすれば自己束縛したキーワードを使えます。
通常のGaucheコードはこのモジュールを必要としません。組み込み関数はモジュール継承によって、
何もしなくても使えるようになっています。
新たに作られるモジュールは、何も指定しなければgauche
モジュールを
継承するからです (詳しくはモジュールの継承参照)。
しばしば、gauche
モジュールを継承しないけれどGaucheの組み込み関数を使いたい
という場合があります。特にR7RSライブラリとプログラムは、そこで使う束縛をすべて
陽にimportする必要があります。従ってGaucheでも、R7RSのimport
と
define-library
はgauche
モジュールを継承しないモジュールを設定します。
R7RSコードでGaucheの組み込み機能を使うには、
(import (gauche base))
とする必要があります。
別の用途としては、自分のモジュールで、Gaucheの組み込み機能のうちいくつかを隠したい、
といった場合があります。例えば次のコードは、Gaucheの組み込み機能のうち
string-scan
とstring-split
だけが見えない
almost-gauche
というモジュールを作ります。
(define-module almost-gauche (use scheme.r5rs) (use gauche.base :except (string-scan string-split) :rename ((gauche:import import))) (extend) ) (select-module almost-gauche) ;; your code here
空のextend
フォームに注目してください。このフォームで、
モジュールの継承リストを空にします。
(gauche.base
の:rename
オプションは、almost-gauche
内で
元のimport
の名前を使えるようにするためのものです。import
を直接
使わないのならこの:rename
オプションは不要です。)