问题标签 [scalaz7]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
159 浏览

scala - 使用仿函数(Scalaz7)提升一个采用隐式参数的函数

刚开始学习Scalaz。这是我的代码

我已经定义了一个函数(只是为了它)

我想抬起它,以便可以使用 Option、List 等容器来使用它。但是当我这样做时

它说error: could not find implicit value for evidence parameter of type scalaz.Monoid[A] def addOptioned = Functor[Option].lift(addXY)

如何解除这些功能?

0 投票
1 回答
89 浏览

scala - 应用验证语法 scalaz + shapeless 2.0

我正在尝试将此Applicative 验证语法示例转换为 Scalaz 7 + Shapeless 2.0

首先是Scalaz语法

到目前为止一切顺利,现在进入 Shapeless 2.0

现在最后一点

所有编译,但当一个人尝试使用它时,例如:

我收到一个错误

任何想法,指针将不胜感激

0 投票
2 回答
150 浏览

scala - 以集合为参数的 scala 提升函数

我有一个接受函数的类f: Option[Seq[Option[A]]] => Option[A]]

我希望这个类的用户能够不必担心Option框架。所以用户会传递一个函数g: Seq[A] => A,并且在后台我会提升该函数。起重部分是我无法做到的。

这就是我所拥有的(使用optionInstance.liftscalaz):

但是,这不会编译,因为电梯操作员正在返回Option[Seq[A]]而不是Option[Seq[Option[A]]]. 如何才能做到这一点?

0 投票
1 回答
29 浏览

scalaz7 - Scalaz Bind.bind 在哪里实现?

我很好奇该方法在哪里scalaz.Bind.bind实现?谢谢

我正在查看 7.3.0-SNAPSHOT 源。

0 投票
1 回答
377 浏览

scala - 遍历 Scalaz 树

我正在尝试了解 scalaz 树结构并且遇到了一些困难!

首先我定义了一棵树:

到目前为止,我已经使用TreeLoc研究了如何找到与某个谓词匹配的第一个元素。例如,查找值为 3 的第一个节点:

我的下一个挑战是尝试找到与某个谓词匹配的所有节点。例如,我想找到所有叶节点(使用TreeLocisLeaf应该很容易)。不幸的是,我一生都无法弄清楚如何走树来做到这一点。

编辑:对不起,我认为我最初的问题不够清楚。需要明确的是,我想以这样一种方式遍历树,以便我可以获得有关节点的信息。Flatten、foldRight 等只允许我对 [Int] 进行操作,而我希望能够对 Tree[Int](或 TreeLoc[Int])进行操作。

0 投票
1 回答
166 浏览

scala - 在 Scalaz 7 中使用 EitherT 时为 Monad[Future] 指定执行上下文

我一直在尝试整理一些使用多个函数的代码,这些函数都返回类型 Future[Either[String, A]]。

由于必须在 Future 内部然后在 Either 内部达到峰值才能获取值的问题,这些函数不能整齐地组合在 for 理解中。在使用了 EitherT monad 转换器后,我找到了一个我喜欢使用 EitherT 的解决方案,尽管必须添加 EitherT 并且在获得最终结果时必须额外调用“运行”的步骤并不理想。

我的解决方案如下,但我不满意的一件事是您需要创建一个Monad[Future]才能使 anyT 工作,这需要一个执行上下文。没有明显的方法可以做到这一点。我所做的是在我的代码范围内有一个隐式执行上下文,并创建一个 Future Monad,我将相同的执行上下文传递给它,以便两段代码使用相同的。这似乎有点混乱,容易出错。

请让我知道是否有更好的方法。

0 投票
0 回答
32 浏览

scala - Monad IO catchAll 运算符的行为

我正在学习 scalaZ 的 monad IO,但我无法理解 catchAll 和 catchSome 运算符的工作原理。我期待看到类似 RxJava 的 onError 或 onErrorrResumeNext 的行为,但没有捕获可抛出的对象,它只是破坏测试并抛出 NullPointerException ..

这是我的两个例子

并抓住一些例子

知道我在做什么错吗?

问候

0 投票
1 回答
187 浏览

scala - 展开 Identity monad 的值

我一直在玩 scalaz,但我被困在一个看似微不足道的问题上。我在玩 Reader 和 Kliesli monad,发现自己遇到了这样的事情:

尽职尽责的回应:

我现在要做的是从 Identity monad 中解开 Int ,因为我应该使用 ?? 运算符,具有此签名:

我应该传递的第一个参数是一个默认值,一个名为 Int 的调用(正如 Brian McCutchon 所指出的):

在继续前进之前,我想了解我在这里缺少什么。感谢 EDITED 解决了我对没有参数功能的按名称调用的困惑。耻辱。

0 投票
2 回答
106 浏览

scala - 使用复杂(双重)操作在 scalaz 中合并地图

我正在使用映射将某些值与元组 (Int, Double) 相关联,其中 int 是它们出现的顺序和它们显示的次数的两倍(它不是,但是使用 int 和 double 来区分这样更清晰)

棘手的部分是我想为元组的每个元素使用不同的幺半群,对于 int 我想保持最小值,记住第一次出现,而对于双倍我想使用加法幺半群所以对于现有的键我们有:

对于新密钥,我们有:

我找不到这样做的方法,我显然可以使用加法 monoid,我可以使用 minval ,但我看不到如何组合它们。任何帮助表示赞赏!谢谢

0 投票
1 回答
613 浏览

scala - 将多个转换与状态 Monad 链接起来

我开始使用 state monad 来清理我的代码。我已经解决了我的问题,我处理了一个名为 CDR 的事务并相应地修改了状态。使用此功能执行状态更新,对于单个事务来说它工作得非常好。

这是一个例子:

我现在要做的是在迭代器上链接许多事务。我发现了一些效果很好但状态转换不需要输入的东西(通过 RNG 改变状态)

我没有成功地尝试适应这一点,但我无法让他们类型签名匹配,因为我的状态函数需要 cdr(事务)输入

谢谢