Lispソースのコンパイル

GCLではLispソースファイルのコンパイル機能を持っています。具体的にはLispのコードをCに変換し、コンパイルはCコンパイラに任せているようです。
例えばtest.lspというソースファイルがあるとします。これをコンパイルするにはGCLを立ち上げ、


>(compile-file "test.lsp")
とします。するとtest.oが生成されます。コンパイルされたオブジェクトファイルは起動中のGCLにロードすることができます。

>(load "test.o")
関数単位でコンパイルすることもできます。まずGCLのシェル上で以下のように関数を定義します。

>(defun fa1 (n i)
(if (zerop n) i
(fa1 (1- n) (* n i))))
この関数をコンパイルするには以下のようにします。

>(compile 'fa1)
上記では一気にオブジェクトファイルの作成までを行ないましたが、内部的にはいったんCのソースに変換されていると書きました。このCソースを表示するには以下のようにします。

>(disassemble 'fa1)
ただし、disassembleが可能なのはコンパイル前に限ります。