funcall read-from-string するわけ

Slime の起動では次のように read-from-string して funcall している。

(progn (load "/slime/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.13550" :coding-system "utf-8-unix"))

以前なんでだろう? と疑問に思ったけどスルーしていたが、今日理由がわかった。
read した時点ではまだ swank パッケージが存在しないからだ。
Common Lisp では存在しないパッケージのシンボルを read しようとするとエラーとなる。
(load "/slime/swank-loader.lisp" :verbose t) が終わるまでは普通に swank パッケージのシンボルを書くことができない。
その対策として read 時には文字列で、実行時にシンボルにする。
なるほど。