In Scala possiamo definire la funzione di legittimazione a livello per i tipi bassi-kinded come così,È possibile definire una funzione di identità di livello superiore di tipo superiore in Scala?
type Id[A] = A
Possiamo anche definire qualcosa di simile per i tipi più elevati-kinded? Vale a dire. possiamo riempire gli spazi vuoti in,
type HKId[A[...]] = ...
in modo che qualcosa di simile a HKId [Elenco] noi torna al costruttore Il tipo di lista?
Il legame di nomi gratuiti a cose come,
type Foo[X] = List[X]
val l : Foo[Int] = List(1, 2, 3)
ci indurrebbe ad attendersi che un'identità superiore kinded tipo di livello sarà simile,
type HKId[A[X]] = A[X]
ma scalac lamenta che tipo X non è stato trovato sul RHS.
C'è qualche codifica intelligente che farà il trucco? O semplicemente non è possibile in questo momento?
Non può provare, ma ciò che abot 'HKId [A [_]] = A' – Dario
+1 per aver reso la mia testa esplodere – delnan
@Dario No ... "Errore: tipo A prende parametri di tipo" sul RHS. –