clozure cl (以下 ccl) も Common Lisp の実装の一つ。以前は OpenMCL という主に Mac 向けの Common Lisp だったものらしい。
Mac OS X (mac mini) にインストールしてみる。 私はTeXを macports で入れているので、ccl も macports のものをインスールすることにする。インストールそのものは
sudo port install cclとするだけ。
個人用の ccl の設定は主に .ccl-init.lisp を利用する。
どうするのが正解かはよくわからないが、取り敢えず sbcl の場合を真似て
~/.ccl/site, ~/.ccl/systems
というディレクトリを作成しておく。
(デフォルトだと ~/.ccl ではなく
~/.asdf-install-dir/ が使われるが、
複数の Common Lisp の実装を使う時に問題になりそうだったので)
2011年3月の時点ではリリース版にはasdfやasdf-installが含まれている。
ただし、asdf-install の方は、意図的に場所を明示しないとロードできないようになっている。例えば macports で ccl-1.6 をインストールした場合は asdf-install は
/opt/local/share/ccl/1.6/tools/asdf-install
というディレクトリにある。
clozureのウェブの説明にしたがって、
(push "ccl:tools;asdf-install;" asdf:*central-registry*)
として、asdf:*central-registry*
に上の場所を追加してから
(asdf:operate 'asdf:load-op :asdf-install)
としてロードする。
起動時にこれらを自動的に行うには、.ccl-init.lispに、
#-:asdf (require 'asdf) (push "ccl:tools;asdf-install;" asdf:*central-registry*) #-:asdf-install (asdf:operate 'asdf:load-op :asdf-install)と書けばよい。
またasdf-installでインストールするファイルの場所だが、上に書いたように、私の趣味でホームディレクトリの下の~/.ccl/siteや
~/.ccl/systemsにしている。
また gnupg のsignaturesも無視したいので、現状では.ccl-init.lispの
asdf関連の設定には
#-:asdf (require 'asdf)
(push "ccl:tools;asdf-install;" asdf:*central-registry*)
#-:asdf-install (asdf:operate 'asdf:load-op :asdf-install)
(pushnew "~/.ccl/systems/" asdf:*central-registry* :test #'equal)
(setf asdf-install:*locations*
      '((#P"/usr/local/lib/ccl/site/" #P"/usr/local/lib/ccl/site-systems/"
	 "System-wide install")
	(#P"~/.ccl/site/" #P"~/.ccl/systems/"
	 "Personal installation")))
(setq asdf-install:*verify-gpg-signatures* nil)
のように記述している。
また、文字コードの設定だが、私は utf-8 で統一しているので
.ccl-init.lispに次のような記述を加えた。
(setf ccl:*default-external-format*
      (ccl:make-external-format :character-encoding :utf-8
                                :line-termination :unix)
      ccl:*default-file-character-encoding* :utf-8
      ccl:*default-socket-character-encoding* :utf-8)
slime 自身のインストールについては
slimeの項を参照。Carbon Emacs でも
やり方はほぼ同じ。
これを ccl でも使えるようにするには、その設定にあるように、
slime-lisp-implementationsに ccl の設定を加えておくだけでよい。
(setq slime-lisp-implementations
      '((ccl ("ccl") :coding-system utf-8-unix)
        (sbcl ("sbcl") :coding-system euc-jp-unix)))