LINUX.ORG.RU

История изменений

Исправление dmitry_vk, (текущая версия) :

Возьмем за основу:

(do-unbox some-function a b c (unbox d) e)
Пусть это раскроется в:
(let ((v (make-array (+ 4 (length d))))
      (i -1))
  (setf (aref v (incf i)) a)
  (setf (aref v (incf i)) b)
  (setf (aref v (incf i)) c)
  (loop for x across d do (setf (aref v (incf i)) x))
  (setf (aref v (incf i)) e)
  v)
Сделать такое преобразование, в целом, несложно.

Исправление dmitry_vk, :

Возьмем за основу:

(do-unbox some-function a b c (unbox v) d)
Пусть это раскроется в:
(let ((v (make-array (+ 4 (length d))))
      (i -1))
  (setf (aref v (incf i)) a)
  (setf (aref v (incf i)) b)
  (setf (aref v (incf i)) c)
  (loop for x across d (setf (aref v (incf i)) x))
  (setf (aref v (incf i)) d)
  v)
Сделать такое преобразование, в целом, несложно.

Исправление dmitry_vk, :

Возьмем за основу:

(do-unbox some-function a b c (unbox v) d)
Пусть это раскроется в:
(let ((v (make-array (+ 4 (length d))))
      (i -1))
  (setf (aref v (incf i)) a)
  (setf (aref v (incf i)) b)
  (setf (aref v (incf i)) c)
  (loop for x in-vector d (setf (aref v (incf i)) x))
  (setf (aref v (incf i)) d)
  v)
Сделать такое преобразование, в целом, несложно.

Исправление dmitry_vk, :

Возьмем за основу:

(do-unbox some-function a b c (unbox v) d)
Пусть это раскроется в:
(let ((v (make-array (+ 4 (length v))))
      (i -1))
  (setf (aref v (incf i)) a)
  (setf (aref v (incf i)) b)
  (setf (aref v (incf i)) c)
  (loop for x in-vector d (setf (aref v (incf i)) x))
  (setf (aref v (incf i)) d)
  v)
Сделать такое преобразование, в целом, несложно.

Исправление dmitry_vk, :

Возьмем за основу:

(do-unbox some-function a b c (unbox v) d)
Пусть это раскроется в:
(let ((v (make-array (+ 4 (length v))))
      (i -1))
  (setf (aref v (incf i)) a)
  (setf (aref v (incf i)) b)
  (setf (aref v (incf i)) c)
  (loop for x in-vector d (setf (aref v (incf i)) x))
  (setf (aref v (incf i)) d))
Сделать такое преобразование, в целом, несложно.

Исходная версия dmitry_vk, :

Возьмем за основу:

(do-unbox some-function a b c (unbox v) d)
Пусть это раскроется в:
(let ((v (make-array (+ 4 (length v))))
      (i -1))
  (setf (aref v (incf i)) a)
  (setf (aref v (incf i)) b)
  (setf (aref v (incf i)) c)
  (loop for x in-vector v (setf (aref v (incf i)) x))
  (setf (aref v (incf i)) d))
Сделать такое преобразование, в целом, несложно.