diff --git a/modules/higherKindCore/src/main/scala/tofu/instances/bind.scala b/modules/higherKindCore/src/main/scala/tofu/instances/bind.scala new file mode 100644 index 000000000..9daccab09 --- /dev/null +++ b/modules/higherKindCore/src/main/scala/tofu/instances/bind.scala @@ -0,0 +1,8 @@ +package tofu.instances + +import cats.Monad +import tofu.control.Bind + +object bind { + implicit def monadFromBind[F[+_, +_], E](implicit bind: Bind[F]): Monad[F[E, *]] = bind.monad +} diff --git a/modules/higherKindCore/src/test/scala/tofu/control/CatsInstancesFromBindSuite.scala b/modules/higherKindCore/src/test/scala/tofu/control/CatsInstancesFromBindSuite.scala new file mode 100644 index 000000000..5c0ce61e1 --- /dev/null +++ b/modules/higherKindCore/src/test/scala/tofu/control/CatsInstancesFromBindSuite.scala @@ -0,0 +1,16 @@ +package tofu.control + +import cats.{Applicative, FlatMap} +import tofu.compat.unused +import tofu.instances.bind._ + +class CatsInstancesFromBindSuite { + def summonBindInstances[F[+_, +_]](implicit bind: Bind[F]): Unit = { + requireApplicative[F[Throwable, *]] + requireFlatMap[F[Nothing, *]] + } + + def requireApplicative[F[_]](implicit @unused applicative: Applicative[F]): Unit = () + + def requireFlatMap[F[_]](implicit @unused flatMap: FlatMap[F]): Unit = () +}