All Downloads are FREE. Search and download functionalities are using the official Maven repository.

effectie.instances.ce2.fxCtor.scala Maven / Gradle / Ivy

The newest version!
package effectie.instances.ce2

import cats.MonadThrow
import cats.effect.IO
import effectie.core.FxCtor

import scala.util.Try

object fxCtor {

  implicit object ioFxCtor extends FxCtor[IO] {

    @inline override final def effectOf[A](a: => A): IO[A] = IO(a)

    @inline override final def fromEffect[A](fa: => IO[A]): IO[A] = IO.defer(fa)

    @inline override final def pureOf[A](a: A): IO[A] = IO.pure(a)

    @inline override final def pureOrError[A](a: => A): IO[A] = MonadThrow[IO].catchNonFatal(a)

    @inline override val unitOf: IO[Unit] = IO.unit

    @inline override final def errorOf[A](throwable: Throwable): IO[A] = IO.raiseError(throwable)

    @inline override final def fromEither[A](either: Either[Throwable, A]): IO[A] = IO.fromEither(either)

    @inline override final def fromOption[A](option: Option[A])(orElse: => Throwable): IO[A] =
      IO.fromOption(option)(orElse)

    @inline override final def fromTry[A](tryA: Try[A]): IO[A] = IO.fromTry(tryA)

    @inline override final def flatMapFa[A, B](fa: IO[A])(f: A => IO[B]): IO[B] = fa.flatMap(f)
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy