For Development HEAD DRAFTSearch (procedure/syntax/module):

9.2 gauche.base - Gauche組み込み関数のインポート

Module: gauche.base

このモジュールは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のimportdefine-librarygaucheモジュールを継承しないモジュールを設定します。 R7RSコードでGaucheの組み込み機能を使うには、 (import (gauche base))とする必要があります。

別の用途としては、自分のモジュールで、Gaucheの組み込み機能のうちいくつかを隠したい、 といった場合があります。例えば次のコードは、Gaucheの組み込み機能のうち string-scanstring-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オプションは不要です。)



For Development HEAD DRAFTSearch (procedure/syntax/module):
DRAFT