果たしてroswellにたよらずにやっていけるだろうか。
なにはともあれ今まで何度も読み返していた「require, ASDF, quicklispを正しく使う」をふたたび、読み返す。いまいち、理解していないんだよなぁ、このあたりの話。roswellにたよってしまっていたのでなおのこと。
とりあえず、FreeBSD環境にSBCLをインストールした。
sudo pkg install sbcl
pkgにはほかにも「alexandria」とか、「asdf」とか、もろもろの他、SBCLのパッチがあたっているとおぼしき、バージョンもある。これを使うべきか?
迷いつつ、SBCLをslimeで使えるように設定して。
(setq inferior-lisp-program "/usr/local/bin/sbcl --noinform")
立ち上げてみたら「asdf」なんたらの文字が見えた。
そうか。SBCLの中にasdfが内蔵されているのか。そういえば、ABCLもそうだった。それならpkgでASDFをインストールすることもないか。
ところがいくらやってみても「~/.config/common-lisp/source-registry.conf 」に定義した内容がcommonlispに反映されない。試行錯誤すること数時間。
あかんわー。
自分のミスとは思えない。もしかしたらSBCL内蔵のASDFは「~/.config/common-lisp/source-registry.conf 」は無効になっているのかもしれない。じゃ、どうやって設定すれば、いいんだ?
「quicklisp1」でもってきたライブラリの場所を認識させたいんだけど2?
つらつら考えて「~/.sbclrc」に設定した。
(asdf::initialize-source-registry '(:source-registry (:tree "~/quicklisp/dists/") :INHERIT-CONFIGURATION))
「asdf:find-system」で設定が有効になっていることを確認。
よし。
でもREPLで「ql:quickload」が使えないのは不便なので「~/.sbclrc」にさらに設定を追加した。
(load #P"~/quicklisp/setup.lisp")
あれ、これでroswellからのREPLとほぼ、同じになったんじゃね?
すくなくともぼくが使うかぎりにおいて。
Footnotes:
「quicklisp」はpkgになかったのでhttps://www.quicklisp.org/beta/からもってきて自前でインストール。
「~/common-lisp」の下は認識されているから自前のLispはここへ置けば、いいんだけど。