I set myself to the task to write a Common Lisp function that concatenates two lists without using append
.
Common Lisp input (concat-lists '(1 2 3) '(4 5 6))
should return (1 2 3 4 5 6)
Even though my solution seems to work it looks overtly complicated
(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)))))
What I'm looking for is a more elegant solution using reduce
where I use seq1
as initial value and then apply a function to each element of seq2
, thereby appending each value of the list to seq1
. Somehow I always get stuck when trying....
Any help or input is much appreciated. Thanks!
list2
in both your functions, since it will not be modified. – Kirkham