Angenommen, ich habe ein einzelnes Element, und ich habe eine Liste von Prädikaten (Funktionen). Ich möchte jedes dieser Prädikate auf das einzelne Element anwenden und eine entsprechende Liste von Rückgabewerten erhalten. Ich weiß, dass map
und Freunde eine einzelne Funktion auf jede Liste von Argumenten anwenden können, aber gibt es eine kurze Syntax, um viele Funktionen auf ein einzelnes Argument anzuwenden?Concise Lisp-Code, um eine Liste von Funktionen alle auf das gleiche Argument (s) anzuwenden und eine Liste der Rückgabewerte zu erhalten?
Natürlich kann ich
(mapcar (lambda (pred) (funcall pred SINGLE-ELEMENT)) LIST-OF-PREDICATES)
tun, aber es wäre schön, wenn es eine Funktion ist, die wie gearbeitet:
(test-predicates-against-element LIST-OF-PREDICATES SINGLE-ELEMENT)
Natürlich kann ich nur defun
es, aber ich wollte wissen, ob es gibt eine akzeptierte Methode dafür.
Ich verstehe nicht, was CLHS darüber zu sagen hat, was DYNAMIC-EXTENT tut. Der Eintrag besagt, dass zum Beispiel eine Implementierung auswählen kann, die so deklarierten Zuweisungsvariablen zu stapeln, und zeigt, dass es wahrscheinlich nicht sinnvoll ist, die Parameter eines Defuns zu stapeln. Es funktioniert hier, weil args eine Liste ist (also von bekannter Größe)? –
args ist eine Liste. Diese Liste wird nur innerhalb dieser Funktion verwendet und nicht zurückgegeben. Also der dynamische Umfang. Die Liste kann Stapel zugeordnet werden, wenn dies unterstützt wird. Die Liste wird bei der Rückkehr von dieser Funktion zerstört, daher wird keine GC-Zeit benötigt. –