fancadescala/tagless/src/main/scala/tf/bug/fancadetagless/PointerChain.scala

23 lines
531 B
Scala

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))
}