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))