LISP 関数の評価
LISP プログラムを書いて実行するということは,LISP 関数を 書いて評価するということです. 簡単な LISP のプログラムを書いて実行してみましょう.
Emacs のウィンドウは2分割されています. 下側のウィンドウでは CLISP が走っていますから, LISP の関数を実行することができます. たとえば, (car '(a b c)) と入力して Enter キーを押すと, 値 A が返されます.car はリストの先頭要素を 取り出す関数です.大文字と小文字は区別しません.
関数が少し複雑になると,下側のウィンドウで関数を直接 に入力するよりも,上側のウィンドウで関数を書いて実行させた 方が,編集作業が楽になります. マウスで上側のウィンドウ内をクリックして, 上側のウィンドウのカーソルをアクティブにしてください. 黒いカーソルが上側のウィンドウで点滅している状態です.
上側のウィンドウに LISP の関数を書きます. 下の例では (car '(a b c)) という関数を書いています.
カーソルが (car '(a b c)) の直後にある状態で, C-x C-e と入力してください. これは,コントロールキーを押しながら X キーを押し, 続いて,コントロールキーを押しながら E キーを 押すという操作です.すると,CLISP によってこの関数が評価 され,下側のウィンドウに結果が表示されます. ここでは,リスト (a b c) の先頭要素 a が返されています. C-e の e は Evaluation(評価)という意味です.
以上のようにして,Emacs で LISP のプログラム(関数)を書き, CLISP で評価するということができます.
C-x C-e は,直前の S 式を 評価する操作です.Emacs でもっと本格的な LISP プログラムを 書いたときには,それを保存して,必要な時にロードして実行する ということになるでしょう.しかし, 本格的な LISP プログラムを書いている途中で, その一部を C-x C-e で評価するということはよく行います.
LISP 関数の定義
定義した LISP 関数は評価することによって使用可能になります. 下図では replace-first という関数を定義しています. この関数は,第2引数として与えられたリストの先頭要素を, 第1引数として指定された要素に置き換えます. たとえば,(replace-first 'a '(x b c)) は (a b c) を 返します.
下図のように,関数定義の直後にカーソルがある状態で, C-x C-e と入力してください. これは,コントロールキーを押しながら X キーを押し, 続いて,コントロールキーを押しながら E キーを 押すという操作です.すると,CLISP によってこの関数が評価 されます.ここでは,関数名 replace-first が返されています. 大文字と小文字は区別しません. これでこの関数は使用可能になりました.
使用可能になった replace-first 関数を使ってみましょう. 下側のウィンドウで,(replace-first 'rings '(ties hats pants)) と 入力して Enter キーを押してください. 上側のウィンドウに入力して C-x C-e で評価してもいいです.
replace-first 関数が評価されて,先頭要素が置き換えられた リスト (rings hats pants) が返されます.