A
append
リストの連結。
> (append '(a b) '(c d)
(a b c d)
イメージ
(a b) (c d)
^ ^
この2つのカッコを取るかんじ。
assoc
Aリスト(association list,連想リスト)から
指定したキーをもつペアを呼び出す。
普通のリストでも動く。
(assoc key alist)
CL-USER> (assoc 'a '((a b) (c d)))
(A B)
CL-USER> (assoc 'b '((a b) (c d)))
NIL
CL-USER> (assoc 'c '((a b) (c d)))
(C D)
CL-USER> (assoc 'a '((a . b) (c . d)))
(A . B)
CL-USER> (assoc 'b '((a . b) (c . d)))
NIL
CL-USER> (assoc 'c '((a . b) (c . d)))
(C . D)
B
C
D
defstruct関係
3つの要素を持った構造体HOGEを定義。
(defstruct HOGE elm1 elm2 elm3)
HOGEを作る
(make-HOGE elm1: foo elm2: bar elm3: woo)
各要素1にアクセス
(HOGE-elm1 aHOGE)
dotimes
指定された回数繰り返しをする。
(dotimes (変数 繰り返し回数 返り値)
式1 ... 式n)
E
F
format
少なくとも2つの引数を取る。
第1引数: 出力先のストリーム
第2引数: フォーマット文字列の指定
文字列そのものを表すリテラルと,
3つ目以降の引数をどのように解釈するかを
format関数に伝えるための指示子の両方を含めることができる。
この指示子の先頭には「~」がつく。(printfでいう%)
~a
エステティック(aesthetic: 美的な)指示子。
引数を1つ消費して,それを人間が読みやすい形式で表示してほしい という指示。
キーワードは先頭の「:」がない形で,
文字列は「" "」がない形に。
例
CL-USER> (format t "~a" "Dixie Chicks")
Dixie Chicks
NIL
CL-USER> (format t "~a" :title)
TITLE
NIL
~t
タブを指定する。
「~10t」とすると,10カラム分の領域を開ける。
「~t」では,引数は消費されない。
例
CL-USER> (format t "~a:~10t~a" :artist "Dixie Chicks")
ARTIST: Dixie Chicks
NIL
~{ ~}
formatが「~{」を見つけたら,次に消費される引数はリストでなければならない。
formatはそのリストの要素を使って,
「~{」と「~}」に挟まれた部分にある指示子を処理していく。
~%
改行コードを出力する。
G
H
I
J
K
L
M
make-list
任意の長さのリストを作る。
> (make-list 3 :initial-element 'hoge)
(hoge hoge hoge)
:initial-elementが与えられていなければ,要素がnilとなる
> (make-list 4)
(nil nil nil nil)
mapcar
マップ関数でよく使われるもの。
マップ関数:リストに対して連続的に関数を適用する。
> (mapcar #'(lambda (x) (+ x 10))
'(1 2 3))
(11 12 13)
> (mapcar #'list
'(a b c)
'(1 2 3 4)
((a 1) (b 2) (c 3))
N
nconc
破壊的なappend
;; 動作例
> (setf hoge '(a))
> (append hoge '(b))
(a b)
> hoge
(a)
> (nconc hoge '(b))
(a b)
> hoge
(a b)
O
P
prog1
プログワン。
式1 ... 式nまで評価し,式1の値を返す。
(prog1 式1 式2 ... 式n)
push
リストに要素をconsする
(push 式 場所)
例
> (setf lis '(1 2)
(1 2)
> (push 'a lis)
(a 1 2)
pop
pushの逆。
リストから要素を取り出す
(pop 場所)
例
> lis
(a 1 2)
> (pop lis)
a
Q
R
rplaca
rplacd
S
subst
substitute。サブスト。
(subst x y z)
zの中の全てのyをxに置き換える。
substitue x for all y in z。
CL-USER> (subst 'a 'b '(a b (b ba) nil a))
(A A (A BA) NIL A)
定義
(defun subst (new old tree)
(cond ((eq old tree) new)
(t (cons (subst new old (car tree))
(subst new old (cdr tree))))))
sublis
複数種類の置き換えを一括で行う。
CL-USER> (sublis '((a b)) '(a b (b ba) nil a))
((B) B (B BA) NIL (B))
CL-USER> (sublis '((a . b)) '(a b (b ba) nil a))
(B B (B BA) NIL B)
CL-USER> (sublis '((a . aa) (c . dd)) '(a b c d (d b ba) c nil a))
(AA B DD D (D B BA) DD NIL AA)
(defun mysublis (alist tree)
(let ((pair (assoc tree alist)))
(cond (pair (cdr pair))
((atom tree) tree)
(t (let ((a (mysublis alist (car tree)))
(d (mysublis alist (cdr tree))))
(cond ((and (eq a (car tree))
(eq d (cdr tree)))
tree)
(t (cons a d))))))))
T
U
V
W
when
(when 条件 式1...式n)
X
Y
Z
最終更新:2012年01月24日 18:06