(rontolisp) docs
← 関数

load

(load filename)

ファイルを読み込み、その中のすべてのトップレベルフォームをグローバル環境で評価し、t を返します。読み込んだファイル内の defunsetq などの定義は後続のコードから引き続き利用できます。相対パスの filename は、その load を書いたファイルのディレクトリ(トップレベルの load ならエントリファイル)からの相対で解決されるため、どのワーキングディレクトリから実行しても (load "sibling.lisp") を見つけられます。コンパイル出力では、読み込まれた定義はランタイムの eval インタプリタのグローバル環境に存在するため、eval を通して到達できます (例: (load "lib.lisp") の後に (eval '(square 5)))。3 つすべてのバックエンドで動作します。WASM の load は WASI path_open でファイルを読むため、モジュールはディレクトリを許可して実行する必要があります (例: wasmtime run -W gc --dir . prog.wasm)。

(load "lib.lisp")
(eval '(square 5))

square を定義するファイルを読み込んだ後、その定義は eval を通して呼び出されます。WASM バックエンドは最初の事前オープン済みディレクトリを基準にパスを解決するため --dir が必要です。

load は意図的に冪等ではありません: 同じファイルを 2 回ロードすると 2 回評価されます (Common Lisp と同じ)。一度だけロードするモジュールセマンティクスには require / provide を参照してください。