Im ersten Kapitel zum Thema Listen haben wir uns erst einmal
mit den Interna des Arbeitsspeichers befasst. Ganz wichtig ist,
dass wir wirklich verstanden haben, warum das Zusammensetzen
von Listen in irgendwelchen Schleifen mit
. Das haben
wir doch begriffen, oder?
Da wir nun schon mal mit remove angefangen haben... ach ja,
es gibt so viele Varianten, die alle remove-irgendwas heissen!
Und sie sind alle in gewissen Situationen sehr praktisch! Die
Urmutter aller dieser Funktionen ist das (remove ...) selbst:
(defun remove(liste element / retliste)
(foreach item liste
(if(/= item element)
(setq retliste(cons item retliste))
)
)
(reverse retliste)
)
Anwendungsbeispiel:
(remove '(anna berta clara dagmar) 'berta )
=> (anna clara dagmar)
Wer VisualLisp benutzt, hat diese Funktion übrigens schon mitgekauft:
Dort heisst sie (vl-remove ...), allerdings werden die beiden
Argumente dort andersherum angegeben.
(vl-remove 'berta '(anna berta clara dagmar))
=> (anna clara dagmar)