« 実践Common Lispを読んでみる(その2) | メイン | 実践Common Lispを読んでみる(その4) »

2008年9月28日

実践Common Lispを読んでみる(その3)

さて、しばらく開きましたがぼちぼち読んでいます、はい。今日は第5章まで読んだのでそこまでのまとめでも。

まずは前回の訂正から。ime-onoff-slimeが実はまだおかしかったのでこのように修正しました。

(defun ime-onoff-slime ()
  (interactive)
  (if slime-mode
    (progn
      (slime-mode nil)
      (toggle-input-method))
    (if (string= major-mode "lisp-mode")
      (progn
        (slime-mode t)
        (toggle-input-method))
      (toggle-input-method))
  )
)

これでとりあえず私の希望通りには動いてくれました。調べて分かったのですが、上記のstring=ってそれだけで文字列比較のマクロらしいです、へぇ。

第3章でCDデータベースを作りながらいろいろCommon Lispの解説を行い、4章から具体的な説明に入りました。

覚えたコマンド
  • C-c C-k (slime-compile-and-load-file) ファイル全体をコンパイル+ロード
  • C-c M-k (slime-compile-file) ファイル全体をコンパイルするのみ
  • C-M-q (indent-sexp) (開き括弧で)式全体のインデントを修正
  • C-c M-q (slime-reindent-defun) 関数の本文全体のインデント修正

あと、C-c C-cはあんまり使わずにこれからはC-c C-kを使う方向で。C-c C-cはその関数しかコンパイルしてくれないので、複数の関数を定義してまとめてコンパイルしたい場合はC-c C-kがいいです。あと、同じ関数名で定義してしまいエラーとなったらREPLでloadしなおしてください。

それとコメントの定義でこんなことがかかれてました。
  • ;;;; (セミコロン4つ)・・・ファイルヘッダのコメント
  • ;;; (セミコロン3つ)・・・後に続く大きなコードセクションに対する段落関数(関数全体の説明)
  • ;; (セミコロン2つ)・・・以降のコードに対するコメントであることを示す、そのため,以降に続くコードと同じインデントにする
  • ; (セミコロン1つ)・・・特定の行にだけに対するコメント
最後に、今日学んだことのメモ
  • defun・・・関数定義、順番に評価され、最後の式の値が返り値となる
    • &optional・・・引数が与えられていればそれを使用し、ない場合はデフォルトの値かNIL
    • &rest・・・引数をリストにして渡す
    • &key・・・シンボルとパラメータを引数として使う

投稿者 mak : 2008年9月28日 01:43

トラックバック

このエントリーのトラックバックURL:
http://sorakaze.net/cgi-bin/blog/mt-tb.cgi/140

コメント

片言に本語で失礼します。

上記のime-onoff-slimeでlisp-modeでちゃんと効くんですけど、REPLではまた効かなくなっちゃうのです。

投稿者 アンガス : 2010年5月18日 09:44

コメントする