Essayant de mapper un HList d'une classe polymorphique personnalisée, je reçois l'erreur redoutée "Impossible de trouver la valeur implicite pour le mappeur de paramètre" erreur. Un exemple de code:Mappage Shapeless et polymorphisme de sous-type avec le type personnalisé lié
import shapeless._
trait SubTrait
case class A() extends SubTrait
case class B() extends SubTrait
case class C[T <: SubTrait](x: T)
object TheMapper extends Poly1 {
implicit def default[T <: SubTrait, L[T] <: C[T]] = at[L[T]](_.x)
}
val ab = C(A()) :: C(B()) :: HNil
println(ab.map(TheMapper))
Ceci fonctionne bien si la limite pour L [T] est par ex. Iterable (voir this very similar question, solution et commentaires). Qu'est-ce que je rate?
Notez que la convention consiste à écrire des variables de type local en minuscules. – OlivierBlanvillain
@OlivierBlanvillain Oh, d'accord. Je ne peux pas dire que j'ai vu cela assez bien pour supposer que c'est la convention. Merci de l'avoir signalé. –
En utilisant le REPL comme un débogueur, sympa :) Merci! –