単純挿入ソート習作

(defun do-simple-insert (list num)
  (if (not list)
      (setf list (list num))
      (if (< (car list) num)
	  (setf (cdr list) (do-simple-insert (cdr list) num))
	  (setf list (cons num list))))
  list)

(defun simple-insert-sort (list)
  (let ((ret-list))
    (dolist (x list ret-list)
      (setf ret-list (do-simple-insert ret-list x)))))

; 結果
; * (simple-insert-sort '(5 4 1 6 3 2))
;
; (1 2 3 4 5 6)
; *