(rontolisp) docs
← 関数

asdf:load-system

(asdf:load-system name)

名前を指定してシステムをロードします: まず :depends-on のシステムを (再帰的に)、次にコンポーネントファイルを :depends-on/:serial の順序で、それぞれ load と同様に評価します。システム名をシンボルとして返します。同じシステムを 2 回ロードしても no-op です (require と同様)。システム定義は、先行する asdf:defsystem から、または次の順で探索して見つかる NAME.asd から得られます: ロードしているファイルのディレクトリ、--system-path で指定したディレクトリ、環境変数 RONTOLISP_SOURCE_REGISTRY のディレクトリ (どちらも PATH のようにプラットフォームのパス区切り文字で複数ディレクトリを連結できます)。"lib/tests" のようなセカンダリシステム名の場合、探索されるファイルはプライマリシステムのもの (lib.asd) です。

インタプリタでは load-system は通常のランタイム関数なので、計算された名前でも動作します。コンパイルパス (JVM/WASM) では、リテラルなトップレベル(asdf:load-system NAME) がコンパイル時に展開されます: 依存システムとコンポーネントファイルは、コンパイル時の load/require インクルードとまったく同様にプログラムへ継ぎ足され、コンパイラはすべてのバックエンドで定義をネイティブに認識します。他のフォームの内側にネストした load-system や計算された引数を持つものはコンパイルエラーです。

;; my-lib.asd
(defsystem :my-lib
  :components ((:file "main" :depends-on ("package"))
               (:file "package")))

;; run.lisp
(asdf:load-system :my-lib)
(my-lib:greet)

package.lispmain.lisp より先にロードされ (:depends-on 制約)、その後プログラムがロード済みシステムを呼び出します。プロジェクトのレイアウト全体と探索パスの詳細はシステムガイドを参照してください。