Julias parametrische Typen definieren wirklich eine Familie von Typen mit unterschiedlichem Layout im Speicher. Ich frage mich, ob dies auch für die Namen und die Anzahl der Felder in einem zusammengesetzten Typ funktioniert? Ein einfaches Beispiel wäre so etwas wie:Kann ich Typdefinitionen in Julia spezialisieren?
type mytype{Float64}
a::Float64
b::Float64
end
type mytype{Int64}
a::Int64
end
Das ist mir für eine Neudefinition mytype
einen Fehler gibt.
Hier möchte ich zwei Felder haben, wenn mytype
's Typ Parameter war Float64
und nur eine, wenn seine Int64
. (Eigentlich ist das, was ich will, komplizierter, aber das ist ein einfaches Beispiel). Man könnte sich vorstellen, abstrakte Typen und <:
, etc. in den oben genannten zu haben.
Ich weiß, dass dies in anderen Sprachen vielleicht nicht möglich ist, aber für mich scheint es, dass der Compiler in der Lage sein sollte, dies herauszufinden, genauso wie Funktionen spezialisiert werden können. Schließlich wird realer (kompilierter) Code konkrete Typen beinhalten und alles wird dem Compiler bekannt sein. (Für wirklich dynamische Typen wäre in diesem Fall vielleicht eine zusätzliche Verkapselungsschicht erforderlich?)
Vielleicht gibt es einen anderen/besseren Weg, um ähnliche Ergebnisse zu erzielen?