配列をリストに変換する - lisp-cookbook-ja/common-lisp GitHub Wiki
1次元の配列であるベクタをリストに変換するには、coerceを利用します。
(coerce #(1 2 3 4) 'list)
;=> (1 2 3 4)
多次元配列の場合は、ライブラリを利用するか自作することになるでしょう
(import 'mycl-util:group) ; On Lispのgroup
(import 'mycl-util:single); On Lispのsingle
;; (group-n-dim '(1 2 3 4) '(2 2)) ;=> '((1 2) (3 4))
(defun group-n-dim (list dim)
(if (single dim)
list
(group-n-dim (group list (car (last dim)))
(butlast dim))))
(defun array->list (array)
(let ((vec (make-array (array-total-size array)
:displaced-to array)))
(group-n-dim (coerce vec 'list)
(array-dimensions array))))
;; 動作例
(array->list #2a((1 2) (3 4)))
;=> ((1 2) (3 4))
注記(編集する方へ)
多次元の配列→リストへの変換でANSI標準のもの(もしくは、良く知られたライブラリ)があったら記述を置き換えてください。