package tf.bug.fancadetagless import cats._ import cats.implicits._ case class PointerChain[F[_]](internal: Map[Int, F[Int]])(implicit functor: Functor[F]) { def ++(other: PointerChain[F]): PointerChain[F] = { ??? } def map[B](f: ((Int, F[Int])) => B): Vector[B] = internal.map(f).toVector } object PointerChain { def empty[F[_] : Functor]: PointerChain[F] = PointerChain(Map.empty) def single[F[_] : Functor](value: F[Nothing]): PointerChain[F] = PointerChain(Map(0 -> value.widen)) }