9.3 トップレベルとモジュールシステム

分割コンパイルした翻訳単位から別の翻訳単位で定義された識別子を参照する場合と同じく、 トップレベルフレーズから翻訳単位で定義された識別子を参照する場合も、 Modulename.localname のような修飾名を使って参照するか、 open 構文を使って非修飾名( 6.3 節「名前 」)で参照することができます。

ただし、他の翻訳単位を参照する前に、その実装がメモリに読み込まれていなければなりません。 起動時にはトップレベルシステムには標準ライブラリのすべての実装が読み込まれています。 ユーザーモジュールは先程説明した #load 指示子で読み込むことができます。 実装が読み込まれていない翻訳単位を参照しようとすると、 Reference to undefined global `...' というエラーになります。

open mod と入力しても、 Mod のコンパイル済みインタフェース(.cmi ファイル)にアクセスするだけで、 Mod の実装は読み込まれず、その時点で Mod の実装が読み込まれていない場合でもエラーにならないことに注意してください。 Reference to undefined global Mod というエラーは Mod を参照する値やモジュール定義を実行したときに初めて発生します。