Page 1 of 1

What is the fastest way to convert a Lisp vector to a list

Posted: Sat May 10, 2014 10:04 am
by joeish80829
This is the fastest I have found so far:

Code: Select all

(defun array-to-list (array)
  (let* ((dimensions (array-dimensions array))
         (depth      (1- (length dimensions)))
         (indices    (make-list (1+ depth) :initial-element 0)))
    (labels ((recurse (n)
               (loop for j below (nth n dimensions)
                     do (setf (nth n indices) j)
                     collect (if (= n depth)
                                 (apply #'aref array indices)
                               (recurse (1+ n))))))
      (recurse 0))))
Can anyone show me how to do this extremely fast. It would be a n length vector...unlimited elements

Re: What is the fastest way to convert a Lisp vector to a li

Posted: Sat May 10, 2014 12:18 pm
by marcoxa
I would just use COERCE. But then.... why do you need this? I presume not for performance....

Cheers
--
MA

Re: What is the fastest way to convert a Lisp vector to a li

Posted: Sat May 10, 2014 1:17 pm
by joeish80829
That is great, thanks...what a simple solution