Ich möchte eine Liste der erforderlichen Module eines bestimmten Moduls (sagen wir das aktuelle Modul).Ermitteln der Liste der erforderlichen Module durch ein Modul in Racket
Ich habe das Gefühl, dass es noch einige andere Möglichkeiten gibt (wie das Parsen des Moduls?), Aber ich habe mit der Idee des Shadowings (require) angefangen und die benötigten Elemente zu einer Hash-Tabelle mit dem Modul hinzugefügt -Name. Das Problem ist, ich kann nicht herausfinden, wie man eine Syntaxdefinition dafür schreibt.
Obwohl nicht funktioniert, eine Funktionsdefinition Äquivalent würde wie unten sein:
(define require-list (make-hash))
(define require
(lambda vals
; add vals to hash-table with key (current-namespace)
(let ([cn (current-namespace)])
(hash-set! require-list cn
(append vals (hash-ref require-list cn))))
(require vals)))
.. es scheint, die letzte Zeile Aufruf geändert werden sollte, das Original (erforderlich) als auch anrufen?
Eine korrekte Version oder ein Zeiger auf, wie man es macht, oder irgendeine andere Weise, das ursprüngliche Ziel zu erreichen, das sehr geschätzt wird.
Das sieht ziemlich beeindruckend aus, fast, wonach ich suche! Für meinen aktuellen Zweck ist das Mapping der Phase 0 ausreichend. Ich wundere mich auch, wenn ich das in einer Funktion in einem anderen Modul anrufe, gibt es eine Möglichkeit, den Modulnamen des Anrufers zu bekommen? Ich bin derzeit im Namespacebereich der Referenz verloren. – MattAPiroglu