Cats Monad Transformers

Knows Not Much

I am trying to learn how to nest monads using MonadTransformers in cats library.

So I am trying to build a data type for Either[String, Option[A]]

This is the code which I have written

import cats.data.OptionT
import cats.instances.list._
import cats.syntax.applicative._

object Ex11 extends App {
   type ErrorEither[A] = Either[String, A]
   type ErrorOrOption[A] = OptionT[ErrorEither, A]
   val x = 42.pure[ErrorOrOption]
   println(x)
}

But I get an error

[error] Ex11.scala:13: could not find implicit value for parameter F: cats.Applicative[Ex11.ErrorOrOption]
[error]    val x = 42.pure[ErrorOrOption]
[error]                   ^

I took this from a sample which was using Xor but I guess the latest cats library removed Xor in favor of Either.

Arseniy Zhizhelev

I suspect that you are missing an import of cats instance:

import cats.instances.either._

(Also the import of import cats.instances.list._ seems to be superfluous here.)

The following should compile:

import cats.data.OptionT
import cats.instances.either._
import cats.syntax.applicative._

object Ex11 extends App {
   type ErrorEither[A] = Either[String, A]
   type ErrorOrOption[A] = OptionT[ErrorEither, A]
   val x = 42.pure[ErrorOrOption]
   println(x)
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Catching exceptions in monad transformers

From Java

Zipping free monad transformers

From Dev

exceptions and monad transformers

From Dev

Monad transformers: IO and state

From Dev

Catching exceptions in monad transformers

From Dev

Monad transformers with scalaz-streams

From Dev

Monad Transformers. First step

From Dev

Monad transformers with scalaz-streams

From Dev

Avoiding Orphan Instances with Monad Transformers

From Dev

Not able to compose the Cats Reader Monad

From Dev

Why are monad transformers different to stacking monads?

From Dev

What is difference between those two monad transformers?

From Dev

Right way to compose continuation and state monad transformers

From Dev

Avoiding case expression ladder without monad transformers

From Dev

Avoiding case expression ladder without monad transformers

From Dev

Monad Stack Penetration Classes with Free/Operational Monad Transformers?

From Dev

Monad Transformers document: eval1 doesn't typecheck

From Dev

How to define local method on top of a monad transformer stack in Scala cats

From Dev

Unit-testing with cats-effect's IO monad

From Java

Scala, cats - how to create tagless-final implementation with IO (or other monad) and Either?

From Dev

Scalaz monad transformers. Applying f1:A => G[B], f2:B => G[C] function to F[G[A]] object

From Dev

A monad of tuples (monad, state)?

From Dev

A monad of tuples (monad, state)?

From Dev

Combine constraints and data transformers

From Dev

Are applicative transformers really superfluous?

From Dev

Data Transformers not working FOSRestBundle

From Dev

JSONModel DATE transformers is nil

From Dev

What are the transformers mean?

From Dev

Type Variable Location in Transformers

Related Related

HotTag

Archive