Frage

Ich bin sehr neu in Lisp. Ich benutze Allegro-Cl. Ich habe Schwierigkeiten, eine Funktion aufzurufen, die ich definiert und geladen habe. Ich würde gerne wissen, wie man die Dinge, die ich definiert habe, durchsuchen kann, zum Beispiel die Auflistung aller Methoden in einem bestimmten Paket oder Auflistung nur Variablen oder Auflistungspaketamen usw.

War es hilfreich?

Lösung

Ich benutze nicht Allegro CL, daher kann ich Ihnen nur von den Tools erzählen, die CL selbst dafür bereitstellt. Vielleicht möchten Sie überprüfen, was die Allegro -Cl -IDE für diese Aufgabe zu bieten hat.

Sie können eine Liste aller Pakete mit den Funktionslisten-All-Packages erhalten. Sie könnten es so verwenden, um ihre Namen zu drucken:

(dolist (p (list-all-packages)) (write-line (package-name p)))

CL -Pakete sind Sammlungen von Symbolen (dh Namen), nicht die mit diesen Namen zugeordneten Objekten. Sie müssen die Namen weiter abfragen, um festzustellen, ob ein Wert und/oder eine Funktion für dieses Symbol definiert sind. Sie können verwenden DO-Symbole über alle Symbole in einem Paket zu schieben. Dies würde alle Symbole im aktuellen Paket ausdrucken:

(do-symbols (s) (print s)

Dies nur die Funktionen:

(do-symbols (s) (when (fboundp s) (print s)))

und dies nur die Funktionen, deren Heimpaket das aktuelle Paket ist:

(do-symbols (s)
  (when (and (eq (symbol-package s) *package*)
             (fboundp s))
    (print s)))

Andere Tipps

Wenn Sie sich an einen Teil des Namens erinnern, können Sie APROPOS (möglicherweise auf ein bestimmtes Paket beschränkt) verwenden, um den vollständigen Namen zu finden.

Ich bin auf das gleiche Problem gestoßen. Nach dem Lesen von Dokumentationen kam ich zur Meinung, dass es keine Möglichkeit gibt, an eine in Repl eingegebene Definition zu erinnern.

Um dieses Problem zu umgehen, tippe ich immer in das Editor -Fenster ein (Strg+n, wenn nicht vorhanden). Auf diese Weise kann ich Definitionen eingeben, sie bearbeiten usw. mit großer Bequemlichkeit. Wenn ich eine Definition bewerten muss, drücke ich Strg+E für eine inkrementelle Bewertung (siehe andere Optionen im Menü "Tools). Ich behalte ein Listener -Fenster links und ein Editor -Fenster rechts, um Eingänge und Ausgänge anzuzeigen.

Es gibt immer noch ein kleines Problem, das sogar einige Fehler verursachen kann: Wenn Sie vergessen, eine Definition zu bewerten, nachdem Sie Änderungen daran vorgenommen haben, bleibt der alte in der Wiederholung. Drücken Sie weiterhin Strg+e.

Wenn Sie mehrere Dateien geöffnet haben und eine Definition in einer der Quelldateien finden möchten, können Sie die Suche> apropos verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top