Sto leggendo questo codice per molto tempo. L'ho inserito in REPL e funziona altrettanto bene.Chi può spiegare il significato di questo codice scala
ma non ho idea di cosa sta succedendo qui. Perché e come funziona anche questo !!!
import shapeless._
case class Size[L <: HList](get : Int)
object Size {
implicit val hnilSize = Size[HNil](0)
implicit def hconsSize[H, T <: HList](implicit tailSize: Size[T]) =
Size[H :: T](1 + tailSize.get)
def apply[L <: HList](l : L)(implicit size: Size[L]) : Int = size.get
}
Size(1 :: "Foo" :: true :: HNil)
Qualcuno può spiegare questo passo dopo passo e aiutarmi a capire cosa sta succedendo qui.