scalaz

    2热度

    1回答

    给定一个功能与签名:A => F[G[B]]。有F和G类型的monads实例。 是否有可能将其改造成能签名:F[G[A=>B]?这种转换是否有任何通用名称? 换句话说会是什么prettify2执行? def pretiffy(x: String): Future[Option[String]] = Future{if(x == "") None else Some(s">>>$x<<<")} v

    0热度

    1回答

    我有一个List[Task[Boolean]],我需要把它变成一个EitherT[Task, Throwable, Unit]。 我有一个可能的解决方案是 EitherT(Task.delay(if (!allAsserts.contains(false)) \/-(()) else -\/(new Exception("BOOM")))) ,但我不知道是否有可能不进行显式调用Task.del

    0热度

    1回答

    比方说,我有一些Repository API,我已经在(Scalaz)阅读器monad中封装了这些事务。现在我想对结果运行计算,并将结果保存回存储库。我想是这样的: type UOW[A] = Reader[Transaction, A] object Record1Repo { override def findAll: UOW[Seq[Record1]] = Reader(t

    1热度

    1回答

    我想这个Applicative validation syntax例如转换成Scalaz 7 +无形2.0 //for jupyter-scala kernel //classpath.add("org.scalaz" %% "scalaz-core" % "7.2.7") //classpath.add("com.chuusai" %% "shapeless" % "2.3.2") ca

    3热度

    1回答

    我一直在尝试简单的Monad变形金刚,其中涉及M[F[A]],其中M和F是monads。如果S是不同的monad,我怎样才能让M[F[A]]和M[S[A]]一起工作? 例如: val a: Future[List[Int]] = ... val b: Future[Option[Int]] = ... a需要ListT[Future, Int]和b需要OptionT[Future, Int]

    2热度

    1回答

    我正在尝试编写用于在Scala中编写系统测试的DSL。在这个DSL中,我不想公开某些操作可能异步发生的事实(因为它们是使用被测试的Web服务实现的),或者可能发生错误(因为Web服务可能不可用,我们希望测试失败)。 In this answer这种方法令人沮丧,但我并不完全同意在编写测试的DSL环境中。我认为DSL会因这些方面的介绍而受到不必要的污染。 在框架问题,请考虑以下DSL: type E

    4热度

    2回答

    我需要生成的组合使用scalas组合方法的流/列表 1 to 30000.toStream.combinations(2).size 此功能永远不会完成30,000项的列表。当我在Python中尝试相同的操作时 r = list(range(1,30000)) z = itertools.combinations(r, 2) %time sum(1 for _ in z) 该操作在26

    1热度

    1回答

    我正在尝试使用Scalaz运算符| + |在这个问题的建议 Best way to merge two maps and sum the values of same key? import scalaz._ val map1 = Map("a" -> 1,"b" -> 2, "c" -> 5) val map2 = Map("a" -> 3,"b" -> 4) val map3 = ma

    1热度

    1回答

    有没有办法将Either[L1, R1]的值绑定到R1 => Either[L2, R2]类型的函数,并获得值Either[L1 | L2, R2],因此单个函数可以声明并可能返回它们的错误和消费者这些函数的monadic管道能够以一种详尽的,类型安全的方式干净地处理所有可能的错误? 编辑 下面是一个例子... sealed trait IncrementError case object Ma

    1热度

    1回答

    我一直在寻找本演示https://github.com/indyscala/scalaz-task-intro/blob/master/presentation.md和感到困惑的代码片段一个它呈现的使用Task.runAsyncInterruptibly(略作修改下面出现): import java.util.concurrent.atomic.AtomicBoolean import sca