From d0e5b33cffda34ca27c1ea0dd1e20770fc4e2a2a Mon Sep 17 00:00:00 2001 From: Zach Smith Date: Wed, 2 Aug 2017 17:56:51 -0700 Subject: Add subflatMap to OptionT (stolen from cats) --- src/main/scala/xyz/driver/core/core.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/main/scala/xyz/driver/core/core.scala') diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala index 1babd91..1d917d6 100644 --- a/src/main/scala/xyz/driver/core/core.scala +++ b/src/main/scala/xyz/driver/core/core.scala @@ -1,6 +1,6 @@ package xyz.driver -import scalaz.{Equal, Monad, OptionT} +import scalaz.{Equal, Functor, Monad, OptionT} package object core { @@ -32,6 +32,9 @@ package object core { def continueIgnoringNone: OptionT[H, Unit] = optionTValue.map(_ => ()).orElse(OptionT.some[H, Unit](())) + + def subflatMap[B](f: T => Option[B])(implicit F: Functor[H]): OptionT[H, B] = + OptionT.optionT[H](F.map(optionTValue.run)(_.flatMap(f))) } implicit class MonadicExtensions[H[_]: Monad, T](monadicValue: H[T]) { -- cgit v1.2.3