22得票2回答
作者单子(Writer Monad)和状态单子(State Monad)实际上是相同的吗?

这里有一个很棒的教程(链接),它似乎表明Writer Monad基本上是一个特殊情况的元组对象,代表(A,B)。Writer在左侧(即A)累积值,并且A有相应的Monoid(因此可以累积或修改状态)。如果A是一个集合,则它会进行累积。 State Monad也处理内部元组的对象。它们都可以进...

22得票2回答
21得票1回答
将双射映射提升为函子

也许我没有看到显而易见的事情,但我正在尝试清理一个使用Scalaz 7的项目中的一些样板文件,并且我没有找到一个似乎非常简单和可能有用的拼图。 假设我们有两种类型之间的双向对应关系:case class Foo(x: Int) case class Bar(i: Int) import s...

21得票3回答
在Scala中的Comonad示例

什么是Comonad?如果可能,请使用Scala语法进行描述。 我发现了scalaz库的实现,但不清楚它在哪里有用。

20得票1回答
使用scalaz中的Either来实现状态分层

在将State与Either集成(幻灯片88页)中,给定State层在Either下的模式,是否有推荐的方法来添加另一种类型的状态,例如通过Writer记录日志?似乎新状态必须位于现有State和Either之间,以利用flatMap中Either的快速失败行为。 以下是演示文稿中代码的可运...

20得票1回答
Scala中的错误处理单子?Try vs Validation

scalaz.Validation被认为比Try单子更强大,因为它可以累积错误。 是否有任何情况下您可能会选择Try而不是scalaz.Validation或scalaz.\/ ?

19得票2回答
在Scala中,有没有一种简洁的方法将两个元组合并成一个较大的元组?

假设我有以下元组:scala> val t1 = Tuple2("abcd", "efg") t1: (java.lang.String, java.lang.String) = (abcd,efg) scala> val t2 = Tuple2(1234, "lmnop") t...

19得票5回答
使用Scalaz或Shapeless将选项元组转换为元组选项

Having (Some(1), Some(2)) I expect to get Some((1, 2)) 并且拥有 (Some(1), None) I expect to get None

19得票2回答
验证与析取

假设我想编写一个具有以下签名的方法:def parse(input: List[(String, String)]): ValidationNel[Throwable, List[(Int, Int)]] 对于输入中的每对字符串,需要验证两个元素是否都可以解析为整数,并且第一个元素小于第二...

19得票1回答
Kleisli、ReaderT和Reader在Scalaz中为什么相同,这只是巧合吗?

在 Scalaz 中: Kleisli[F, A, B] 是 A => F[B] 的封装器。 ReaderT[F, A, B] -- 读取器单子转换器 -- 只是 Kleisli[F, A, B] 的别名。 Reader[A, B] 单子是使用恒等单子 Id 特化的 ReaderT,...