Einführung von N-dimensionalen Tupel-Strukturen und Typ-Unification #1
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
1. Motivation
In der bisherigen Architektur wurden Argumentlisten, Parameterlisten und Datenstrukturen (Records/Series) als getrennte Konzepte behandelt. Dies führt zu unnötigem Overhead durch "Boxing" (Einpacken von Werten in Objekte) und erschwert die statische Optimierung mathematischer Operationen.
Das Ziel dieser Erweiterung:
2. Architekturbeschreibung
2.1 Die Typ-Hierarchie (
IStaticType)Wir führen eine rekursive Inferenz-Logik im
TypeCheckerein, die den am besten passenden statischen Typ ermittelt:stTuple: Der Basisfall. Eine heterogene Sequenz fester Länge (z. B.[1 "Text"]). Jeder Slot hat seinen eigenen statischen Typ.stVector: Ein Spezialfall des Tupels. Alle Elemente besitzen den identischen statischen Typ (Homogenität). Dies erlaubt den typsicheren Zugriff über variable Indizes.stMatrix: Ein rekursiver Spezialfall des Vektors. Ein Vektor, dessen Elemente wiederum Vektoren oder Matrizen sind, sofern sie eine identische Shape (Dimensionen) aufweisen ("Rechteckigkeit").2.2 Die "Scalar-Pure" Optimierung
Dies ist eine rein interne Optimierung des Spezialisierers:
stTuple,stVector,stMatrix) ausschließlich statisch bekannte Typen (idealerweise Skalare wieOrdinaloderFloat) enthält, wird er als Value-Type behandelt.Ordinalnicht automatisch zuFloat, um einen Vektor zu erzwingen).2.3 Unification (Vereinheitlichung der Konzepte)
Das Tupel-Konzept ersetzt mehrere bisherige Mechanismen:
3. Skript-Beispiele und Inferenz
Die Syntax für alle Tupel-basierten Strukturen ist einheitlich
[...].Die Matrix-Invariante erfordert exakt gleiche Formen der Unterelemente.