Hatena::Grouphappyabc

モジュールシステム

モジュールシステム

概要

モジュールは、複数の名前(変数名、関数名、クラス名)をグループ化すための概念です。他の言語では、名前空間(namespace)やパッケージ(package)と呼ばれることもあります。

別のモジュールに属していれば、同名の変数を別のものとして扱うことができます。

(module A ()
 (define x 42))

(module B ()
 (define x 10))

(trace A.x) ;; => 42
(trace B.x) ;; => 10

(module name exports body)[文]

モジュールを宣言します。

exportsには外部に公開する名前を指定します。

(module A (x y)
 (define x 10)
 (define y 11)
 (define z 12) ;; <- 公開されない
) 

空リストを指定すると、全ての名前が公開されます。

bodyには任意の文を用いることができます。モジュールのネストも可能です。

(open name)[文]

モジュールを開きます。

モジュールを開くと、変数の名前解決に影響を与えます。