toplevelモジュール

コンパイル単位でのトップレベルの変数を保持するモジュールオブジェクトです。
静的に発見できない変数参照は、toplevelモジュールから検索されます。

 println(foo); // toplevel::foo と同じ意味 

そのため、toplevelにincludeすれば、暗黙的な変数参照の対象となります。

 test_module : module{
   foo : fun(obj){
     println(obj );
   } 
 }
 toplevel.include(test_module);

 foo(1000); // toplevel::foo(1000) と同じになる

toplevelには最初からincludeされているモジュールが一つあり、それをbuiltinモジュールといいます。

  • 組み込み関数(load関数やgc関数など)
  • 組み込みクラス(IntクラスやFloatクラス、Arrayクラスなど)
  • 組み込みモジュール(Iteratorモジュール、mathモジュールなど)

これらは実はbuiltinモジュールのメンバとして存在しています。そのため暗黙的に参照できるのです。