А есть в скале какой-то type class для экстракторов? То, что обычно делается через def unapply в объекте не работает, когда надо чтобы была сигнатура в виде def unapply(s: String): Option[SomeId[A]], где final case class SomeId[A](value: Long) extends AnyVal для некоторых type A. Пытаюсь использовать фантомный тип А, чтобы различать разные айдишники и при этом иметь общий код для распаковки для тайпсейв айди в роутах http4s GET -> Root / SomeId[CustomerId](id)