Das waren die
guten Nachrichten über "IN". Kann ich also meine korrigierte Variante von "IN" durch die offizielle Version ersetzen? Das wäre erstrebenswert, geht aber nicht. Denn ich habe noch zwei weitere Dinge "verbessert" - verbessert im Sinne der Verwendung von "IN" in meinem APL-Workspace Crawler.
Das INen von großen geschachtelten Variablen kann sehr lange dauern und während dieser Zeit die kompletten CPU-Ressourcen in Anspruch nehmen. Dies kann nicht direkt IN oder )IN angelastet werden, denn der eigentliche Übeltäter ist ⎕TF.
Hierzu ein Beispiel: Auf meinem neuen 2 GHz Rechner dauert das Inen einer 10553x24-Matrix der Tiefe 2 ca. 20 Minuten. Die Größe der Variable ist, gemessen mit "4 ⎕AT", 9.117.824 bzw. 1.744.766. Die Größe der ATF-Datei, die ausschließlich die Variablen enthält ist, ca. 2MB.
Für den meinen Crawler, der sowieso nur nach Funktionen und Operatoren sucht, war das pure Zeit- und Ressourcenverschwendung. Ich habe mir daher die Definition von IN vorgenommen und entsprechend geändert: Hast du gerade eine Variable zur Bearbeitung vor dir, dann gehe zum nächsten Objekt. Einfach und effizient!
Wäre das nicht auch ein Feature für die offizielle Version von "IN". Auch dem APL2 Library Manager würde es gut zu Gesicht stehen: Der Anwender wird vor dem Einlesen komplexer APL2-Variablen aus ATF-Dateien erst mal gefragt, ob er sie wirklich sehen will - oder ähnlich.