Next: gauche.bitvector - ビットベクタユーティリティ, Previous: gauche.array - 配列, Up: ライブラリモジュール - Gauche拡張モジュール [Contents][Index]
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オプションは不要です。)
Next: gauche.bitvector - ビットベクタユーティリティ, Previous: gauche.array - 配列, Up: ライブラリモジュール - Gauche拡張モジュール [Contents][Index]