18 lines
		
	
	
	
		
			871 B
		
	
	
	
		
			Common Lisp
		
	
	
	
	
	
			
		
		
	
	
			18 lines
		
	
	
	
		
			871 B
		
	
	
	
		
			Common Lisp
		
	
	
	
	
	
(in-package :alexandria)
 | 
						|
 | 
						|
(defun copy-array (array &key (element-type (array-element-type array))
 | 
						|
                              (fill-pointer (and (array-has-fill-pointer-p array)
 | 
						|
                                                 (fill-pointer array)))
 | 
						|
                              (adjustable (adjustable-array-p array)))
 | 
						|
  "Returns an undisplaced copy of ARRAY, with same fill-pointer and
 | 
						|
adjustability (if any) as the original, unless overridden by the keyword
 | 
						|
arguments."
 | 
						|
 (let* ((dimensions (array-dimensions array))
 | 
						|
        (new-array (make-array dimensions
 | 
						|
                               :element-type element-type
 | 
						|
                               :adjustable adjustable
 | 
						|
                               :fill-pointer fill-pointer)))
 | 
						|
   (dotimes (i (array-total-size array))
 | 
						|
     (setf (row-major-aref new-array i)
 | 
						|
           (row-major-aref array i)))
 | 
						|
   new-array))
 |