Georgi Krastev

Results 411 comments of Georgi Krastev

This could also be part of Kittens: https://github.com/typelevel/kittens/blob/master/core/src/main/scala/cats/derived/function.scala

But if you use `ApplicativeError[EitherT[Either[Throwable, *], Throwable, *], Throwable]` it will derive the outer one, not the inner one so that has higher priority I believe.

Simulacrum injector: https://github.com/JetBrains/intellij-scala/blob/42d6cabb6a50c9048f3bb8564eccd4082703aa5a/scala/scala-impl/src/org/jetbrains/plugins/scala/lang/psi/impl/toplevel/typedef/simulacrum/SimulacrumInjector.scala Monocle injector: https://github.com/JetBrains/intellij-scala/blob/42d6cabb6a50c9048f3bb8564eccd4082703aa5a/scala/scala-impl/src/org/jetbrains/plugins/scala/lang/psi/impl/toplevel/typedef/MonocleInjector.scala Looks like this would have to be contributed to the intellij-scala plugin.

I guess it has to be fixes in the compiler - it works in Scala 3. I didn't realise that it works when not treated as a lambda.

Oh ok I see - it's a trick that changed the method signature but not binary compatibility.

> Yeah I think that PR would be appreciated, I wonder why they were marked private too Probably to prevent anyone from using them explicitly 🤷

I think another approach is to put an `implicit def Functor[F[_], A](fa: F[A]): FunctorOps[F, A]` conversion in `package cats` so that when you import `Functor`, you also import the implicit...

I think it doesn't work because it causes confusion with `object Functor`'s `apply` method. I.e. old usages of `Functor[Foo]` break

I think this would only work if we have a different form of natural transformation. Instead of `type ~>[F[_], G[_]] = arrow.FunctionK[F, G]` it would have to be `Function2K[F[_, _],...

Ha, interesting. I guess the two annotations are competing on adding the companion object 🤔