It seems like the Fetch.liftIO helper is requiring a ConcurrentEffect when liftF only requires a Concurrent. I think the constraint could be loosened to [Concurrent: LiftIO]. Then the call could even become:
def liftIO[F[_]: Concurrent: LiftIO](io: IO[A]): Fetch[F, A] =
liftF[F](LiftIO[F].liftIO(io))
The down side of course is that now everywhere needs two type parameters, but it should be non-breaking because everyone already would have needed a ConcurrentEffect in scope anyway.
It seems like the
Fetch.liftIOhelper is requiring aConcurrentEffectwhenliftFonly requires aConcurrent. I think the constraint could be loosened to[Concurrent: LiftIO]. Then the call could even become:The down side of course is that now everywhere needs two type parameters, but it should be non-breaking because everyone already would have needed a
ConcurrentEffectin scope anyway.