Ready Lisp をダウンロードしたばかりで、REPL をいじっています。私が知りたいのは、長いプログラムをどのように書き、解釈し、出力を得るかということです。PLTスキームが持っているもののようなものです。
できれば最小限の手間でやりたいです。読んでいる本を続けたいだけです。ありがとう。
Ready Lisp をダウンロードしたばかりで、REPL をいじっています。私が知りたいのは、長いプログラムをどのように書き、解釈し、出力を得るかということです。PLTスキームが持っているもののようなものです。
できれば最小限の手間でやりたいです。読んでいる本を続けたいだけです。ありがとう。
Common Lisp は関数LOADとCOMPILE-FILEを提供します。
LOADは、Lisp のテキスト ソース コードまたはコンパイル済みファイルをロードし、それらを実行します。実行された印刷は、通常の出力ストリームに送られます。
COMPILE-FILEを使用すると、Lisp ソース コードを含むファイルからコンパイル済みファイルを生成できます。通常、ファイル コンパイラを使用するとプログラムの実行速度が速くなり、コンパイラがいくつかのチェックを行い、最適化のヒントを提供する可能性があるという利点があります。多くの実装では、ネイティブ マシン コードが生成されます。COMPILE-FILE で生成されたファイルは、LOAD でロードできます。
Common Lisp では、通常、実行中の Lisp を使用してコードをコンパイルおよびロードすることに注意してください。PLT スキームで使用されるモデルは、「開始」するたびにコードが新しいスキームで実行されるというものです。これは初心者には役立つかもしれませんが、大規模なソフトウェアを作成するには時間の無駄になることがよくあります。
新しいファイル ( example.lisp
) を開き、ソース コードを入力してC-c C-c
から、単一のトップレベル フォームC-c C-k
をコンパイルしてロードするか、ファイル全体をコンパイルしてロードします。
「コンパイルして読み込む」とは、実行中のイメージを変更することを意味します。少し変更した後はすべてを再コンパイルする必要はありませんがdefun
、問題のフォームのみを再コンパイルしてください。その後、REPL に切り替えて試すことができます。
たとえば、次のフォームをソース ファイルに入力できます。
(defun square (n)
(* n n))
次に、そのフォームをポイントして を押しC-c C-c
、REPL に切り替えて試してみます。
CL-USER> (square 3)
9
CL-USER>