僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
#!/usr/bin/env clisp (print "print foo") (prin1 "prin1 foo") (princ "princ foo")
$ ./print.lp
"print foo" "prin1 foo"princ foo
print は、改行してから出力し、最後に 空白を一つ出すそうな。
circular list とかいうらしい。
clisp では、この前に、
[1]> (setf *print-circle* t)
する。それから。
[2]> (defparameter *myclist* (list 1 2 3)) *MYCLIST* [3]> *myclist* (1 2 3) [4]> (cdr *myclist*) (2 3) [5]> (cdr (cdr *myclist*)) (3) [6]> (cdr (cdr (cdr *myclist*))) NIL [7]> (cdr (cdr (cdr (cdr *myclist*)))) NIL
この最後尾のnilを自分自身と置き換える。
[8]>> (setf (cdr (cdr (cdr *myclist*))) *myclist*) #1=(1 2 3 . #1#) [9]>> (cdr *myclist*) #1=(2 3 1 . #1#) [10]> (cdr (cdr *myclist*)) #1=(3 1 2 . #1#) [11]> (cdr (cdr (cdr *myclist*))) #1=(1 2 3 . #1#)
ずっと昔にどこかから頂戴した設定を見様見真似で書き換えて
メール振り分けに使っていた。
alist のリストの car がキーとなり、value と値の一致した
メールがあったら、
folder を振り分け候補にする。らしい。
(setq mew-refile-guess-by-alist '(("key1" ("value1_1" . "+folder1_1") ("value1_2" . "+folder1_2") ...) ("key2" ("value2_1" . "+folder2_1") ("value2_2" . "+folder2_2") ...) ... ) )
key には "Return-Path:" しか使ってなかったが、
"List-ID:" なども使ってみた。
また、value に "ZuckMail \\[version 1\\.00\\]"
といった正規表現も書いてみた。
リストの前から何番目かを返す関数を書いてみた。
配列を使えばいいのだろうけど。
(defun myllist (mylist num) (cond ((< num 0) nil) ((zerop num) (car mylist)) (t (myllist (cdr mylist) (- num 1)))))
(myllist '(zero one two three) 2) TWO
else でなく t とわかるまで、しばらく嵌っていた。
この場合、mylist が大きければ大きいほど時間がかかる...はず?
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。