title: Concatenate two lists in Common Lisp
body: <p>I set myself to the task to write a Common Lisp function that concatenates two lists without using <code>append</code>.</p>
  
  <p>Common Lisp input <code>(concat-lists '(1 2 3) '(4 5 6))</code> should return <code>(1 2 3 4 5 6)</code></p>
  
  <p>Even though my solution seems to work it looks overtly complicated</p>
  
  <pre><code>(defun concat-lists(seq1 seq2)
      (cond ((not (null seq1)) (cons (car seq1) (concat-lists (cdr seq1) seq2)))
            (T (cond ((not (null seq2)) (cons (car seq2) (concat-lists seq1 (cdr seq2))))
                     (T nil)))))
  </code></pre>
  
  <p>What I'm looking for is a more elegant solution using <code>reduce</code> where I use  <code>seq1</code> as initial value and then apply a function to each element of <code>seq2</code>, thereby appending each value of the list to <code>seq1</code>. Somehow I always get stuck when trying....</p>
  
  <p>Any help or input is much appreciated. Thanks!</p>