Ich habe eine große Liste von globalen Variablen, die jeweils ihre eigene Setup-Funktion haben. Mein Ziel ist es, diese Liste zu durchlaufen, die Setup-Funktion jedes Elements aufzurufen und einige Statistiken für die Daten zu generieren, die in die passende Variable geladen wurden. Was ich jetzt versuche, funktioniert jedoch nicht und ich brauche Hilfe, damit mein Programm die Setup-Funktionen aufruft.Funktionsnamen als Strings in Lisp?
Die globalen Variablen und ihre Setup-Funktionen unterscheiden zwischen Groß- und Kleinschreibung, da sie aus XML stammen und für die Eindeutigkeit erforderlich sind.
Die Daten sieht etwa so aus:
'(ABCD ABC\d AB\c\d ...)
und die Setup-Funktionen wie folgt aussehen:
(defun setup_ABCD...
(defun setup_ABC\d...
Ich habe versucht, sie zusammen und drehen die resultierende Zeichenfolge in eine Funktion, verketten Dies stört jedoch den Namespace der zuvor geladenen Setup-Funktion. Hier ist, wie ich versucht, das umzusetzen:
(make-symbol (concatenate 'string "setup_" (symbol-name(first '(abc\d)))))
Aber mit funcall
auf das nicht funktioniert. Wie kann ich eine aufrufbare Funktion erhalten?
Wenn Nirgends die Antwort des Mannes funktioniert, wäre es schön, sie als akzeptiert zu markieren, indem Sie auf das Häkchen klicken. – Pablo
Der Name Standard in Lisp ist Bindestriche, keine Unterstriche. Außerdem liest der Leser alle Symbole intern ein, und der Standard besteht darin, sie in Kleinbuchstaben zu schreiben. Daher lautet die Standardmethode zum Aufrufen der Setup-Funktion 'setup-abcd'. – Svante
Entschuldigung für die verspätete Zecke! Auch die Setup-Fns wurden von einem Nicht-Lisper geschrieben. Ich habe ihm seitdem meine Kopie von Norvigs Lisp/AI-Buch ausgeliehen. – ktdh