运维开发网

monad-transformers

0
  • scala – 在EitherT上的左平面地图

    假设我有返回Future的函数[要么[_,_],我想在失败的情况下应用其中的一些函数,这意味着只将它们应用于左侧.简化的例子是: def operation1: Future[Either[String, Int]] = Future.successful(Right(5)) def operation2: Future[Either[St...[详细]

    2020-07-27 20:11 分类:编程语言
  • scala – 将Monad包装成解析器 – 我是否需要Monad变换器以及如何操作?

    我有一个monadic类型的Exp,我想构建一个解析为这样一个值的解析器.以下代码有效,但是我能做些更好/更酷的事情吗? def grid(x: Int, y: Int): Problem = ??? def expInt: Parser[Exp[Int]] = ??? def grid: Parser[Exp[Problem]] = fo...[详细]

    2020-07-12 08:25 分类:编程语言
  • Scalaz:过滤器在| @ |中起什么作用?

    我们在Futures上使用了WriterT monad转换器希望从异步应用程序中获取更多有组织的日志,但是我们遇到了一些麻烦. 如果我编译下面的应用程序,我会收到以下错误.请注意,这不是关于withFilter的警告. [error] value filter is not a member o...[详细]

    2020-07-06 21:18 分类:编程语言
  • Scala:使用StateT monad转换器组成的选项的错误推断类型

    我对 Haskell monad变换器有点熟悉,但对 Scalaz(版本7)不熟悉.我从以下Haskell代码中做了(我认为是)一个简单的翻译: import Control.Monad.State type Pass a = StateT String Maybe a monadTest :: Pass String monadTest = do s...[详细]

    2020-07-05 11:45 分类:编程语言
  • scala – 使用哪种Monad变压器?

    我正在尝试编写下面的验证函数,以便在遇到第一个错误后停止验证.三种返回类型与其他功能不同.我使用哪个monad变换器来编译这段代码? import scalaz._ import Scalaz._ import scala.concurrent.Future import scala.concurrent.Executio...[详细]

    2020-06-21 18:16 分类:编程语言
  • scala – 堆叠M,要么和作家

    我目前正在使用EitherT堆叠Futures和Eithers: type ErrorOr[A] = Either[Error, A] def getAge: Future[ErrorOr[Int]] = ??? def getDob(age: Int): ErrorOr[LocalDate] = ??? for { age <- EitherT(getAge) dob <- Eith[详细]

    2020-06-08 18:18 分类:编程语言
  • 在scala中堆叠Monad变形金刚

    我试图以一种 haskell方式堆叠 scalaz的monad transfromers: statyReader :: (MonadReader Int m, MonadState Int m) => m Int 斯卡拉: def statyReader[F[_]](implicit r: MonadReader[F, Int], s: MonadState[F, Int]): F[Int] =[详细]

    2020-06-04 17:39 分类:编程语言
  • scala – 如何使用Future [M [_]]使用免费monad

    我使用免费monad为ETL过程实现了一种简单的语言.当使用List作为数据获取和存储的输入和输出时,一切正常.但是我使用异步库并与Future [List]一起使用 常见的进口和定义 import scala.concurrent.Future import scala.concurrent.Execution...[详细]

    2020-05-30 11:31 分类:编程语言
  • 如何使用Scalaz 7的EitherT与liftM

    如果我有一个monad变压器类型采取两个类型的参数,我可以使用liftM提升值到变换的monad: scala> val o = 1.point[List].liftM[OptionT] o: scalaz.OptionT[List,Int] = OptionT(List(Some(1))) 但是,如果我尝试与EitherT相同的东西,似...[详细]

    2020-05-26 10:59 分类:编程语言
  • 为什么我们需要Scala中的Monad变形金刚?

    我的理解如下: 假设M1和M2是单子,即它们提供符合monadic定律的函数单元和flatMap.不幸的是我们无法为M1 [M2]创建单位和平面地图.对于任何M1和M2,看起来单位和flatMap并不总是存在.我不知道我们是否需要证明这一点. 因此解决方案是为M1 [...[详细]

    2020-05-13 15:25 分类:编程语言