The following works in sbcl+grid: (copy-to (make-array 2 :element-type 'double-float :initial-contents '(1.0d0 2.0d0)) 'grid:foreign-array) But it does not work in clisp+grid. The root cause lies in the function grid/array.lisp/element-type. It uses `(array-element-type grid)'. But this can present a problem. Quoting hyperspec: (Because of *array* <26_glo_a.htm#array> *upgrading*, this *type specifier*<26_glo_t.htm#type_specifier>can in some cases denote a *supertype* <26_glo_s.htm#supertype> of the *expressed array element type*<26_glo_e.htm#expressed_array_element_type>of the *array*.) In CLISP, array-element-type returns `T' when passed #(1d0 2d0) It returns T even when passed a simple array: (array-element-type (make-array 2 :element-type 'double-float :initial-contents '(1.0d0 2.0d0) :adjustable nil :fill-pointer nil :displaced-to nil) ) The proposed fix is (defmethod element-type ((grid array)) (type-of (row-major-aref grid 0)) #+skip(array-element-type grid)) Now copy-to works in clisp as well. Mirko