Diese nicht kompiliert und ich verstehe nicht, warum:Warum funktioniert das Mapping über einen HList von Option [T] nicht?
import shapeless._
import poly._
object option extends (Option ~> List) {
def apply[T](t: Option[T]) = t.toList
}
val simple = Some(1) :: Some("hello") :: Some(true) :: HNil
val opts: List[Int] :: List[String] :: List[Boolean] :: HNil = simple map option
Diese etwas überraschend, da dies nicht kompiliert:
import shapeless._
import poly._
object choose extends (Set ~> Option) {
def apply[T](s: Set[T]) = s.headOption
}
val sets = Set(1) :: Set("foo") :: HNil
val opts: Option[Int] :: Option[String] :: HNil = sets map choose
Bitte sagen Sie, welchen Fehler Sie bekommen. Lass die vielen Leser (zu deinem einen Autor) nicht raten oder müssen sie ausführen. –
@Paul Thx für den Vorschlag. Es ist ein gewisser Kompromiss zwischen Fragenpräzision (was die Chancen, dass jemand die Frage IMHO tatsächlich beantworten wird, erheblich verbessert) und der Bereitstellung von so viel Information wie möglich. Vielleicht wird SO eines Tages einen integrierten Compiler haben und wir werden das Beste aus beiden Welten haben (ganz zu schweigen von weniger Tippfehlern im Code). – jedesah
Äh, nein, nicht in diesem Fall. Das Bereitstellen der Fehlermeldung ist ein paar zusätzliche Zeilen und stört nicht, was Sie bereits gesetzt haben. "kompiliert nicht" ist nur geringfügig schlechter als das berüchtigte "es funktioniert nicht" –