Common Lisp でリストの末尾に追加するマクロ
(defmacro push-2-tail (lat x) `(setf ,lat (append ,lat (list ,x))))
(defvar *db* '((a b c) (d e f))) (push-2-tail *db* '(g h i)) *db* ;; -> ((a b c) (d e f) (g h i))
;; なぜなら (push-2-tail *db* '(g h i)) は ;; こう展開される(こう書いたのと同じだ)から ;; (setf *db* (append *db* (list '(g h i))))
SN 2013/08/01 00:41:18
Archives > CommonLisp_defmacro_test_01.html