(defun both (ListA ListB newlist) ; Bildet die Schnittmenge 2er Listen
(message "%S %S" (car ListA) newlist)
(if (member (car ListA) ListB) ; Wenn das erste Element von ListA in ListB ist
(if (member (car ListA) newlist) ; Wenn das erste Element von ListA in newlist ist
() ; Mache nichts
(push (car ListA) newlist) ; Schreibe das erste Element von ListA in newlist
)
)
(pop ListA) ; Verwirf das erste Element von ListA
(if (eq (= 0 (length ListA)) nil) ; Wenn ListA nicht leer ist
(both ListA ListB newlist) ; Rekursiver Aufruf
)
(reverse newlist) ; newlist umdrehen
)
(message"Liste A: %S" (setq ListA '(1 2 3 4)) ) ; Beispielliste A
(message"Liste B: %S" (setq ListB '(2 4 8 16)) ) ; Beispielliste B
(setq newlist ()) ; leere Liste
(setq newlist ()) ; leere Liste
(message "%S" (both ListA ListB newlist)) ; Rufe both (ListeA ListeB newlist) auf und gib ihr letztes Argument zurück