実践Common lispを読み始めた-第2章 お気の済むまで:REPLツアー(2)

REPL

やっとのことでLisp in a Boxが動くようになったのでREPLを試す。REPLってシェルみたいなものなんじゃないのかと思っていたら、それを見透かしているかのように、

UnixDosのシェルプロンプトと同様、Lispのプロンプトは何かを起こすきっかけになる表現を入力できる場所だ。ただし、シェルのようにコマンド1行ずつ読んで解釈していくのではない。LispLispの式を読んで、それをLispのルールに従って評価し、その結果を印字する。

と書いてある。でも、シェルだって複数行のスクリプトを読んで評価してくれるし、シェル変数なんてものあるし、関数定義だってできる。とすると本質的には何が違うのだろう。このまま悩んでいると日記がここから進まないのでスルーする。

本に書いてある通りに、

CL-USER> 10

とか

CL-USER> (defun hello-world () (format t "hello, world"))

などと打ち込んでみる。

(多分)SLIMEのおかげで、括弧の対応に気を使わないでよいのはうれしいが、Syntax coloringがREPLでも有効になってくれるともっとうれしい。

作業の保存とロード

REPLだと打ち込んだ内容(関数定義や変数定義)がLispの終了とともに消えてしまう。そこで、SLIMEを使ってREPLとソースコードエディタの上手な組み合わせ方の説明。SLINEというのは使ってみると結構便利で、

  • 括弧の対応や必要括弧の補完
  • 推測した引数の表示
  • コンパイル
  • デバッガの起動

をやってくれる。これならAllegroのIDEを使わなくてもよいと思った。

SLIMEの説明を読んでいて気づいたのは、実践Common Lispではコンパイルを意識させる記述があること。昔読んだ入門書ではコンパイルなんて意識したことはなかった。速度以外に何か意味があるのだろうか。