[Mew-dist 06055] Re: uniqfy
Murata Takashi
Takashi.Murata at example.com
1998年 8月 20日 (木) 22:01:53 JST
From: Kazu Yamamoto (山本和彦) <kazu at example.com>
Subject: [Mew-dist 06028] uniqfy
Date: Thu, 20 Aug 1998 15:21:45 +0900
> 本日開催された itojun 先生による Lisp 教室の演習問題として、よい子の
> (「禁断の」ともいう) mew-uniq-list を作ってみましたのでお試し下さい。
> ないとは思いますが、副作用バリバリかもしれません。
(defmacro mew-uniq-list (lst)
(` (let ((tmp (, lst)))
(while tmp (setq tmp (delete (car tmp) (cdr tmp))))
(, lst))))
なんか面白いマクロだなぁと感心して、テストしてみたのですが、うまく
動作していないと思うのですが、大丈夫でしょうか?
(mew-uniq-list '(a a b a b b c b)) → (a a b b b c)
同じメンバが並ぶと排除出来ないようです。
以下のようにすれば思ったようには動くのですが、もう少し簡単に
ならないかな…これなら関数にした方がいいかも。
(defmacro mew-uniq-list (lst)
(` (let ((tmp (, lst)))
(while tmp (rplacd tmp (delete (car tmp) (cdr tmp)))
(setq tmp (cdr tmp)))
(, lst))))
┌───────────── 村田 隆 / Takashi.Murata at example.com ┐
└ 日本システム技術(株) 技術部 Tel:03-3503-8736 Fax:03-3580-7806 ┘
Mew-dist メーリングリストの案内