Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import cats._
- import cats.arrow.Choice
- case class Kleisli[F[_], A, B](run: A => F[B]) {
- def apply(a: A): F[B] = run(a)
- def andThen[C](k: Kleisli[F, B, C])(implicit F: FlatMap[F]): Kleisli[F, A, C] = { val _ = (k, F); ??? }
- def andThen[C](f: B => F[C])(implicit F: FlatMap[F]): Kleisli[F, A, C] = { val _ = (f, F); ??? }
- def compose[Z](k: Kleisli[F, Z, A])(implicit F: FlatMap[F]): Kleisli[F, Z, B] = { val _ = (k, F); ??? }
- def local[AA](f: AA => A): Kleisli[F, AA, B] = { val _ = f; ??? }
- def map[C](f: B => C): Kleisli[F, A, C] = { val _ = f; ??? }
- def mapF[N[_], C](f: F[B] => N[C]): Kleisli[N, A, C] = { val _ = f; ??? }
- def flatMapF[C](f: B => F[C]): Kleisli[F, A, C] = { val _ = f; ??? }
- }
- object Kleisli {
- def liftF[F[_], A, B](fa: F[B]): Kleisli[F, A, B] = { val _ = fa; ??? }
- implicit def semigroupKForKleisli[F[_]: SemigroupK, A, ?]: SemigroupK[Kleisli[F, A, ?]] = ???
- implicit def choiceForKleisli[F[_]: Monad]: Choice[Kleisli[F, ?, ?]] = ???
- }
Add Comment
Please, Sign In to add comment