Emacs Lisp

flatten の改善

昨日の関数 flatten を改良してみました。 concat を呼ぶごとに cons セルが生成されていたところが省けて、少し軽くなった筈です。 (defun flatten2 (tree) (reverse (flatten-rec tree nil))) (defun flatten-rec (tree stack) (if tree (if (atom tree) (…

Lisp プログラム書いてみました。

square: 2乗する flatten: ツリーを左から再帰的に読んで、リストを返す concat: リストの連結 reverse: リストをひっくり返す (defun square (x) (* x x)) (eval 3) (defun flatten (x) (if x (if (atom x) (cons x nil) (concat (flatten (car x)) (flatte…