Hatena::ブログ(Diary)

cocoatomo衝動日記

2009-02-12 今日も Emacs Lisp

[]flatten の改善 12:52 flatten の改善を含むブックマーク

昨日の関数 flatten を改良してみました。

concat を呼ぶごとに cons セルが生成されていたところが省けて、少し軽くなった筈です。

(defun flatten2 (tree)
  (reverse (flatten-rec tree nil)))

(defun flatten-rec (tree stack)
  (if tree
      (if (atom tree)
	  (cons tree stack)
	(flatten-rec (cdr tree) (flatten-rec (car tree) stack)))
    stack))