package scalaprops

import scalaz.Functor

final case class CogenState[A](rand: Rand, gen: Gen[A]) {
  def map[B](f: A => B): CogenState[B] =
    CogenState(rand, gen.map(f))
}

object CogenState {
  implicit val instance: Functor[CogenState] =
    new Functor[CogenState] {
      override def map[A, B](fa: CogenState[A])(f: A => B) =
        fa map f
    }
}