こういう感じでappendする関数があったとしましょう。
1]> (defun append$ (lst1 lst2) (if (null lst1) lst2 (cons (first lst1) (append$ (rest lst1) lst2))))) APPEND$ [2]> (append$ '(a b c d e f g) '(h))
この関数は、中身を見たら分かるけども、短いほうを左にしたほうが処理速度が早くなる。
例えばこんな感じのリストがあるとして、
(setf done '()) (do '(i 0 (+ i 1)) ((> i 10000) done) (setf done (cons i done))) ;; (10000 9999 9998 .... 2 0)
(append$ done '(-1))と、(append$ '(-1) done)とでは、処理速度が圧倒的に違う。
というか、(append$ done '(-1))だとスタックオーバーフローが起きた。