Mit Blick auf Travis Brown ausgezeichnete Blog-Post auf Type classes and generic derivation, sehe ich die folgende Methode:Bedeutung von `::` in Type Parameter?
implicit def hconsParser[H: Parser, T <: HList: Parser]: Parser[H :: T] =
new Parser[H :: T] {
def apply(s: String): Option[H :: T] = s.split(",").toList match {
case cell +: rest => for {
head <- implicitly[Parser[H]].apply(cell)
tail <- implicitly[Parser[T]].apply(rest.mkString(","))
} yield head :: tail
}
}
Was ist die Bedeutung von H :: T
in Parser[H :: T]
?
Auch, wie behandelt diese case cell +: rest
den Fall, wo s
, d. H. Eingabe in apply
ist leer?