数値から数字のリストへの変換とか。

どもです。
ぼちぼちと,Project Euler の問題を解いていますよっと。
現在42問目とかかな。
んで,その中でよく使う処理をメモでもしておいて,エントリとしようかという企て。

数値から数字のリストへの変換

CL-USER> (num-to-list 123456789)
(1 2 3 4 5 6 7 8 9)

という感じにしてくれます。リストにしなくてもいいかもしれんが,
リストにしておくと色々と助かることがあるわけでして。


コード。

(defun num-to-list (num)
  (mapcar (lambda (ch) (- (char-code ch) (char-code #\0)))
          (coerce (format nil "~A" num) 'list)))

format のところは,write-to-string でもオッケー牧場なはず。
むしろ,better かも。

REPL バッファでのカレントディレクトリの変更

以前にはまって,今回もはまったので,いい加減メモしておこうということです。
何に? というと,相対パスを使用してファイルを読もうとした時に,
カレントディレクト? が三途の川の向こう岸で,
ファイルを読めないぞと怒られるわけです。


んで,sb-posix:chdir という関数を使用してみたけど,ダメ。
Emacs から M-x cd してもダメでした。
で,今のところの正解は,変数 *default-pathname-defaults* に,
ご希望のディレクトを設定するという方法です。
要するに,

(setf *default-pathname-defaults* #P"/wherever/you/like/")

とかすれば大丈夫だと思う。

まとめ

目指せ50問!
今宵,そして明日はぐっと寒くなるそうです。