aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/core.scala
diff options
context:
space:
mode:
authorZach Smith <zach@driver.xyz>2017-08-02 17:56:51 -0700
committerZach Smith <zach@driver.xyz>2017-08-02 17:56:51 -0700
commitd0e5b33cffda34ca27c1ea0dd1e20770fc4e2a2a (patch)
treea4c055b2cf00d60740bde75b7d619e8a6a626e0c /src/main/scala/xyz/driver/core/core.scala
parentf1328134ada77d1c21374f7cca953a376a9b27f9 (diff)
downloaddriver-core-d0e5b33cffda34ca27c1ea0dd1e20770fc4e2a2a.tar.gz
driver-core-d0e5b33cffda34ca27c1ea0dd1e20770fc4e2a2a.tar.bz2
driver-core-d0e5b33cffda34ca27c1ea0dd1e20770fc4e2a2a.zip
Add subflatMap to OptionT (stolen from cats)
Diffstat (limited to 'src/main/scala/xyz/driver/core/core.scala')
-rw-r--r--src/main/scala/xyz/driver/core/core.scala5
1 files changed, 4 insertions, 1 deletions
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]) {