Guest User

Untitled

a guest
Mar 22nd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. import cats._
  2. import cats.arrow.Choice
  3.  
  4. case class Kleisli[F[_], A, B](run: A => F[B]) {
  5. def apply(a: A): F[B] = run(a)
  6. def andThen[C](k: Kleisli[F, B, C])(implicit F: FlatMap[F]): Kleisli[F, A, C] = { val _ = (k, F); ??? }
  7. def andThen[C](f: B => F[C])(implicit F: FlatMap[F]): Kleisli[F, A, C] = { val _ = (f, F); ??? }
  8. def compose[Z](k: Kleisli[F, Z, A])(implicit F: FlatMap[F]): Kleisli[F, Z, B] = { val _ = (k, F); ??? }
  9. def local[AA](f: AA => A): Kleisli[F, AA, B] = { val _ = f; ??? }
  10. def map[C](f: B => C): Kleisli[F, A, C] = { val _ = f; ??? }
  11. def mapF[N[_], C](f: F[B] => N[C]): Kleisli[N, A, C] = { val _ = f; ??? }
  12. def flatMapF[C](f: B => F[C]): Kleisli[F, A, C] = { val _ = f; ??? }
  13. }
  14.  
  15. object Kleisli {
  16. def liftF[F[_], A, B](fa: F[B]): Kleisli[F, A, B] = { val _ = fa; ??? }
  17. implicit def semigroupKForKleisli[F[_]: SemigroupK, A, ?]: SemigroupK[Kleisli[F, A, ?]] = ???
  18. implicit def choiceForKleisli[F[_]: Monad]: Choice[Kleisli[F, ?, ?]] = ???
  19. }
Add Comment
Please, Sign In to add comment