(setf lst '(A B C D E))
 
(nth 0 lst)
;; A
;; = car
 
(nthcdr 1 lst)
;; (B C D E)
;; = cdr
 
(mapcar #'list '(a b c) '(1 2 3 4))
;; ((A 1) (B 2) (C 3))
;; いずれかのリストが空になった時点で終了
 
(mapcar #'cons '(a b c) '(1 2 3 4))
;; ((A . 1) (B . 2) (C . 3))
;; 柔軟な pairlis
 
;; maplist は cdr を取りながら進む
;; mapcdr と言い換えてもいいかも
(maplist #'cons '(a b c) '(1 2 3 4))
;; (((A B C) 1 2 3 4) ((B C) 2 3 4) ((C) 3 4))
 

 

 
;; tree
 
;; こんな tree があって
(setf tr '(a (a x) (b x) c))
;; (A (A X) (B X) C)
 
;; X を Y に置き換えたい場合
;; substitute を使ってもうまくいかない
 
(substitute 'y 'x tr)
;; (A (A X) (B X) C)
;; なぜなら、リストのどの要素も X ではないから
 
;; tree に対してアトムの置換えをしたいときは
;; subst を使う
(subst 'y 'x tr)
;; (A (A Y) (B Y) C)
 

 
 

 
 
 
 

§1534 · Posted By · 3月 19, 2014 · Development · Tags: , , , , · [Print]