package tf.bug.fancadetagless import cats.effect.Sync import cats.implicits._ import io.chrisdavenport.fuuid.FUUID case class Block(uuid: FUUID, make: Make, pins: Set[Pin]) object Block { def fromMake[F[_]](make: Make)(implicit s: Sync[F]): F[Block] = { val uuid = FUUID.randomFUUID[F] val pins = make.pins.traverse[F, Pin] { case (tpe, dir) => Pin.fromMake(tpe, dir) } (uuid, pins).mapN { case (u, v) => Block(u, make, v.toSet) } } }