分割コンパイルした翻訳単位から別の翻訳単位で定義された識別子を参照する場合と同じく、
トップレベルフレーズから翻訳単位で定義された識別子を参照する場合も、
Modulename.localname
のような修飾名を使って参照するか、
open
構文を使って非修飾名( 6.3 節「名前 」)で参照することができます。
ただし、他の翻訳単位を参照する前に、その実装がメモリに読み込まれていなければなりません。
起動時にはトップレベルシステムには標準ライブラリのすべての実装が読み込まれています。
ユーザーモジュールは先程説明した #load
指示子で読み込むことができます。
実装が読み込まれていない翻訳単位を参照しようとすると、 Reference to undefined global `...'
というエラーになります。
open
と入力しても、
mod
Mod
のコンパイル済みインタフェース(.cmi
ファイル)にアクセスするだけで、
Mod
の実装は読み込まれず、その時点で
Mod
の実装が読み込まれていない場合でもエラーにならないことに注意してください。
Reference to undefined global
というエラーは Mod
Mod
を参照する値やモジュール定義を実行したときに初めて発生します。