これはロケット科学ではないと思いますが、コンパイルされた Lisp ファイルを実行するにはどうすればよいですか? WindowsでemacsとSLIMEを使用しています。SLIME メニューからファイルをコンパイルするのは簡単です。コンパイルが完了すると、私の Lisp ソースと同じディレクトリに wx64fsl が出力されます。このファイルをロード/実行するにはどうすればよいですか? コードのブロック全体を評価してファイルを実行してきましたが、コンパイルされたバージョンを実行するとパフォーマンスがはるかに向上すると言われました。
3 に答える
SLIME REPL から:
,cd
ディレクトリをLispファイルのあるディレクトリに変更します(load (compile "filename.lisp"))
またはSLIMEメニューから:
SLIME > コンパイル > コンパイル\ロード
基本的には恥ずかしいほど簡単で、メニューオプションさえありましたが、最初は命名法に戸惑いました。うまくいけば、これは将来誰かを助けるでしょう。
(LOAD "whatever")
コンパイルされたファイルが同じ名前と実装固有の拡張子で既に存在しない限り、通常、 whatever.lispをロードしてコンパイルします。これらのファイルは(COMPILE-FILE "whatever.lisp")
キーを使用して SLIME を使用して、または emacs で生成されますC-c C-k
。
Rainer が推奨するように、おそらくASDFを使用してシステムを定義し、依存関係の管理とパッケージのインストールには間違いなくquicklispを使用する必要があります。プロジェクトテンプレートの作成におすすめのquickprojectもあります。quicklisp で簡単にインストールできます。
あなたの Lisp 実装は自動的に関数をコンパイルしていますか? OS X の SBCL は私のために行います。その場合、ファイルをロードするときのコンパイル時間を節約すること以外に、コンパイルされたファイルを使用するメリットはないと思います。
CLHSから取得し、REPL でのセットアップでテストした例:
(defun f (x) x)
F
>
(compiled-function-p #'f)
T
>
実際には、私は常に .lisp ファイルを使用してきました。Make をビルド ツールとして使用して、変更時に Lisp ソース コードを自動的にコンパイルすることに時間を費やしたことはありません。少なくとも私のセットアップでは、コンパイル時間を節約する (実行時間を高速化しない) 以外に、コンパイルされた fasls を使用することによる実際の利点は見られませんでした。
また、コンパイル時間を節約するために、パッケージ/安定コードの大部分をコア ファイルにロードする (自動的にコンパイルする) 手法を使用します。これにより、そのコア ファイルから開始していくつかの新しいコードをテストするときにコンパイル時間が最小限に抑えられます。 .lisp ファイル。