Wspólne seplenienie z funkcji

Mam następujące wspólne funkcje seplenienia:(aggregate line1 line2) i(queuer data result).

queuer powinien wypchnąć do wyniku wartościline1 iline2 jeśli mają pierwsze pole różne lub sumę tych 2 linii, jeśli mają pierwsze pole równe.

Nie wiem, dlaczego nie zmienia mojej listy wyników.

Uwaga: Inicjalizuję listę wyników za pomocą(push (pop data) result) mieć tam pierwszy element. 2 listy to 1-zagnieżdżone listy(("1" "text") ("2" "text") (...)).

(defun aggregate (line1 line2)
  (progn
    (list 
     (nth 0 line1)
     (nth 1 line1)
     (nth 2 line1)
     (concatenate 'string (nth 3 line1) ", " (nth 3 line2))
     (concatenate 'string (nth 4 line1) ", " (nth 4 line2)))))

(push (pop x) y)

(defun queuer (data result)
  (loop do
       (let ((line1 (pop data))
             (line2 (pop result)))
         (if (equal (first line1) (first line2))
             (progn
               (push (aggregate line1 line2) result)
               (print "=="))
             (progn
               (push line2 result)
               (push line1 result)
               (print "<>"))))
       while data))

Dziękujemy za wszelkie spostrzeżenia.

questionAnswers(4)

yourAnswerToTheQuestion