2010年7月19日月曜日

Common Lispのプログラム実行について


このエントリーをはてなブックマークに追加


実用Common Lispを読みながら勉強中なのですが、ここで一つの疑問が。
本書ではプログラムは全てREPLの中で実行させていますが、
実際にプログラムが完成して独自にバッチ等で動かそうと思ったらどうすればいいんだろう?

cなら、cc でコンパイルして出来上がった実行環境を ./a.out 等で実行できるし、
javaなら javac でバイトコンパイルしたものを jre等で実行できる。

この操作をCommon Lispならどうやるのだろう?という事で調べてみた。
*間違ってるかもしれないので注意。

SBCLではスクリプト実行をサポートしているようなので、

1. 実行可能なスクリプトとして
# vi test.cl
--------------------------
#!/usr/local/bin/sbcl --script

(format t "hello world~%")
--------------------------

# chmod +x test.cl
# ./test.cl
→ hello world


2.ソース、またはfaslとして読み込ませる
# vi test.cl

--------------------------
(format t "hello world~%")
--------------------------

# sbcl
* (compile-file "test.cl")

‐ # sbcl --script test.cl
→ hello world

- # sbcl --script test.fasl
→ hello world

とりあえず、これで作ったプログラムを単独で実行させられそう。

clispとかどうやるんだろう?

1 件のコメント:

Pon さんのコメント...

処理系依存になるはずです。clozure clなら save-applicationで sbcl も似た名前の関数があったはずです。eclだったら cに変換してから gccとかでコンパイルできるはずです。

コメントを投稿