Shapeless: ограничение типов классов

(ПРИМЕЧАНИЕ: разделить на Shapeless: попытка ограничить элементы HList их типом и Shapeless: собственное ограничение HList с использованием Coproduct)

Вопрос 3 - ограничить классы дел типами параметров

Очень хорошим дополнительным преимуществом было бы, если бы я мог использовать ограничения HList для ограничения класса case только для построения из AnyVals, Strings и определенного MyBaseTrait, которые рекурсивно выполняют то же самое ограничение. Было бы здорово, если бы ограничение было определено для базовой черты и не касалось какого-либо производного класса дел. Что-то вроде:

trait MyBaseTrait
type MyCP = Boolean :+: Long :+: ... :+: String :+: MyBaseTrait
case class ValidSimple(b: Boolean, s: String) extends MyBaseTrait
case class ValidNested(s: String, vs: ValidSimple) extends MyBaseTrait
case class NotOfBaseTrait(l: Long)

case class InvalidNested(s: String, vs: NotOfBaseTrait) extends MyBaseTrait // => compile error

Это позволило бы провалиться намного раньше. Это возможно? через GeneriC#Repr или DeepHList?

0 ответов

Другие вопросы по тегам