diff options
author | vlad <vlad@driver.xyz> | 2017-04-13 10:22:09 -0700 |
---|---|---|
committer | vlad <vlad@driver.xyz> | 2017-04-13 10:22:09 -0700 |
commit | 2d0aba0eaf360c521d9bcfbf48dc748b777301d2 (patch) | |
tree | 1c88759d0cd63e5009d3173f695011c447a2e500 /src/main/scala/xyz/driver/core/core.scala | |
parent | fbf25ed06bf87af2d139ae58f208d9bb5b299e03 (diff) | |
download | driver-core-2d0aba0eaf360c521d9bcfbf48dc748b777301d2.tar.gz driver-core-2d0aba0eaf360c521d9bcfbf48dc748b777301d2.tar.bz2 driver-core-2d0aba0eaf360c521d9bcfbf48dc748b777301d2.zip |
PDW-598 PR comments, refinement for OptionT utils
Diffstat (limited to 'src/main/scala/xyz/driver/core/core.scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/core.scala | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala index 3e77c1f..1babd91 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 +import scalaz.{Equal, Monad, OptionT} package object core { @@ -25,6 +25,26 @@ package object core { private[core] trait Tagged[+V, +Tag] } type @@[+V, +Tag] = V with tagging.Tagged[V, Tag] + + implicit class OptionTExtensions[H[_]: Monad, T](optionTValue: OptionT[H, T]) { + + def returnUnit: H[Unit] = optionTValue.fold[Unit](_ => (), ()) + + def continueIgnoringNone: OptionT[H, Unit] = + optionTValue.map(_ => ()).orElse(OptionT.some[H, Unit](())) + } + + implicit class MonadicExtensions[H[_]: Monad, T](monadicValue: H[T]) { + private implicit val monadT = implicitly[Monad[H]] + + def returnUnit: H[Unit] = monadT(monadicValue)(_ => ()) + + def toOptionT: OptionT[H, T] = + OptionT.optionT[H](monadT(monadicValue)(value => Option(value))) + + def toUnitOptionT: OptionT[H, Unit] = + OptionT.optionT[H](monadT(monadicValue)(_ => Option(()))) + } } package core { |