専門書を読みながら Common Lisp を勉強していると、本の最初の方に書いてあるんだけど、後で「あれってどうするんだっけ?」となることがよくある。
そんな感じで自分自身、最近調べ返したことをメモをしておく。
CLISP は ffcall とセットでインストール
僕は Mac で CLISP という処理系を使ってるのだけど、後々 DBI なんかのライブラリーを使いたいなら ffcall とセットでインストールしておいた方がいい。
MacPorts を使ったインストール例
$ sudo port install ffcall $ sudo port install clisp +dynffi ;; CLISP $ clisp (ql:quickload :cffi)
もう少し詳しくは こちら。
REPLに怒られたら
REPL を操作しているときエラーが出たりしてプロンプトがネストすることはよくある。
そんなときは :a か :q とタイプすればトップレベルのプロンプトに戻れる。
REPL 上からエディタを起動
REPL を操作してる最中にスクリプトファイルを弄りたくなったら、
(ed "foo.lisp")
で指定したファイルがエディタで開く。
編集し終わったらエディタを閉じる(例えば Vim なら :x 若しくは :q)と REPL に戻る。
編集後のスクリプトを読み込むには、
(load "foo.lisp")
組み込み関数のパラメータが分からなかったら
組み込み関数(built-in system function)に渡すパラメータの構成を確認したいときは describe を使う。
(describe #'remove) #<SYSTEM-FUNCTION REMOVE> is a built-in system function. Argument list: (#:ARG0 #:ARG1 &KEY :FROM-END :START :END :KEY :TEST :TEST-NOT :COUNT) For more information, evaluate (DISASSEMBLE #'REMOVE).
本の中で関数が紹介されてても引数が全て解説されているわけじゃないから自分で調べるのに役立つ。
使えそうなものを探す
キーワードを使って関連する項目を探すには apropos を使う。
(apropos "remove-if") SYSTEM::C-REMOVE-IF function SYSTEM::C-REMOVE-IF-NOT function REMOVE-IF function REMOVE-IF-NOT function
Quicklisp を使ってるなら、ql:system-apropos でライブラリを検索できる。
(ql:system-apropos "dbi") #<SYSTEM caveman-middleware-dbimanager / caveman-20140211-git / quicklisp 2014-02-11> #<SYSTEM clack-middleware-dbi / clack-20140211-git / quicklisp 2014-02-11> #<SYSTEM dbd-mysql / cl-dbi-20140211-git / quicklisp 2014-02-11> #<SYSTEM dbd-postgres / cl-dbi-20140211-git / quicklisp 2014-02-11> #<SYSTEM dbd-sqlite3 / cl-dbi-20140211-git / quicklisp 2014-02-11> #<SYSTEM dbi / cl-dbi-20140211-git / quicklisp 2014-02-11> #<SYSTEM dbi-test / cl-dbi-20140211-git / quicklisp 2014-02-11>
他にも知っといたら便利だろうなぁというのを思い出したらあとで書き足す。