couple quick questions: 1) why doesn't Arrow provide lift(identity) as a default implementation of Category's id? and 2) any thoughts on having typeclass instances for PartialFunction? I was looking for a Profunctor instance for Map and the rabbit hole basically ended there...

though f: PartialFunction[A, B] can be converted to something more usable with, like, Kleisli(f.lift) I guess. But it seems in the spirit of cats to provide instances for stdlib types so they're usable with minimal friction

As you can see the last expression do fold on the foldable monad toIO monad. I want that (cb: Vector[KkConsumerRecord] => F[A]) return an IO[A] but the IO is not foldable. Inside cb it could generates some side effects, that why I want a return type of IO.How to do monadic recursion without fold?Thanks

and f yields a Failure for any elements in as, bs action also yields Failure which is great. However, there's particular spot in my program when I want to do something else, namely apply f to all elements of as and collect only the produced Bs ignoring any Failures. The expected type Action[List[B]] is the same but semantics are different. I was able to come up with the following so far:

@rkrzewski hmm I don’t see right away why you are getting that error. I’d have to poke around a bit. But I hadn’t read through your problem carefully enough. Are you attempting to handle the Throwable from a failed Task, or only the potential Failure from the EitherT?

@rkrzewski did you use the uber import (import cats.implicits._) or piecemeal imports?

if I have EitherT[F, A, B] and a function from A => F[B], what's the best way to end up with F[B]? I've found handleErrorWith, value, and valueOr, but all of those seem like I'd have to combine a few things together

I think I want something like valueOrF but maybe I'm missing something better