volta scalac è un compilatore, ha il potenziale di essere in grado di impreziosire il codice generato con qualunque strutture di dati sono necessari per implementare generici reificate.
Quello che voglio dire è che scalac avrebbe la capacità di vedere ...
// definition
class Klass[T] {
value : T
}
//calls
floats = Klass[float]
doubles = Klass[double]
... e "espandere" a qualcosa di simile:
// definition
class Klass_float {
value : float
}
class Klass_double {
value : double
}
// calls
floats = Klass_float
doubles = Klass_double
Modifica
Il punto è: il compilatore ha la capacità di creare tutte le strutture dati necessarie che dimostrano essere necessario per fornire ulteriori informazioni sul tipo in fase di esecuzione. Una volta che questo tipo di informazioni è disponibile, il runtime di Scala ne trarrebbe vantaggio e potrebbe eseguire tutte le operazioni di riconoscimento dei tipi che possiamo immaginare. Non importa se la JVM fornisce bytecode per generici reificati o meno. Il lavoro non è svolto dalla JVM, ma dalla biblioteca di Scala.
Se hai già scritto un debugger simbolico (l'ho fatto!), si sa che si può sostanzialmente "scaricare" tutte le informazioni che il compilatore ha in fase di compilazione nel file binario generato, adottando qualsiasi organizzazione di dati dimostra essere più conveniente per un'ulteriore elaborazione. Questa è esattamente la stessa idea: "scarica" tutte le informazioni sul tipo presenti nel compilatore Scala.
In breve, non vedo perché non sia possibile, non importa se la JVM fornisce operazioni native per generici reificati o meno.
Un'altra modifica
IBM X10 dimostra la capacità sto parlando di: compila il codice X10 sul codice Java, sfruttando i generici reificati su piattaforme Java. Come ho detto prima: può essere fatto, ma solo da persone che sanno come funziona un compilatore e come una libreria di runtime può sfruttare le informazioni "scaricate" dal compilatore in fase di compilazione sul codice generato. Per ulteriori informazioni: http://x10.sourceforge.net/documentation/papers/X10Workshop2012/slides/Takeuchi.pdf
fonte
2011-02-01 02:56:46
Eventuali collegamenti dove posso leggere su questo? – cdmckay
Collegamenti aggiunti mentre parli :-) –
Non avevo idea che i ragazzi della Scala lo stessero facendo. Questo è molto bello – cdmckay