Skip to content

Instantly share code, notes, and snippets.

@lispm
Created February 17, 2013 20:53
Show Gist options
  • Save lispm/4973399 to your computer and use it in GitHub Desktop.
Save lispm/4973399 to your computer and use it in GitHub Desktop.
concatenate -> concat
(defun concat (type &rest items)
(let* ((len (loop for e in items
if (typep e 'sequence)
sum (length e)
else sum 1))
(seq (make-sequence type len)))
(loop with pos = 0
for e in items
if (typep e 'sequence)
do (progn
(setf (subseq seq pos) e)
(incf pos (length e)))
else
do (progn
(setf (elt seq pos) e)
(incf pos)))
seq))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment