问题标签 [scala-cats]

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 投票
0 回答
272 浏览

scala - 为什么 Try 猫中默认的隐式 Applicative 实例

在和猫玩耍时,我注意到了一种我无法完全解释的行为:

不是特别有用的方法,随便玩玩。

在完全参数化方法或显式传递所需实例时可以正常工作:

这不进行类型检查:

好的,TryInstances在解决之前OptionInstances

但是,为什么不Tuple2期望而不是Try?之前已TupleInstances解决TryInstances并定义一个Applicative实例。是arity吗?实例的顺序是否有特殊原因?虽然我看到值类型不会影响隐式解析,但为什么不影响呢?

猫 0.9.0,斯卡拉 2.12.1

谢谢你。

编辑毕竟似乎没有Applicative实例,因此没有,所以这部分问题似乎已经解决。Tuple2pure

0 投票
0 回答
160 浏览

scala - 自由单子公式

据我了解,自由构造允许将任何 Functor 提升到 Monad。当我使用 Cats 库时,即使不提供仿函数实例,我也可以将此 ADT 提升到 monad,这怎么可能?

同样在传统(简单)方法中,当 Free 定义为

我将不得不继续编码我的 ADT:

当我使用 Cats 时,我不必提供 cont 参数,为什么?

0 投票
1 回答
126 浏览

scala - 使用 Monads Transformers 堆叠 Monad

我正在学习 Monad Transformers,我正在尝试学习如何嵌套 Monad。

所以假设我想创建一个Future[Either[String, Option[A]]]

所以为了模拟这个形状我做了

现在我做

我得到

所以这看起来是正确的。我在一个选项里面有一个 1,它在一个权利里面,它在一个未来的成功里面。好的!

但如果我这样做

我希望我能得到Future(Success(Right(None))),但我看到了输出

另外,如果我想要类似的东西

如果我尝试做

输出很奇怪

那根本不是我的形状,因为现在有两个非他莫属......

0 投票
1 回答
231 浏览

arrays - 如何组合幺半群类型的数组?

一个幺半群类型的列表或数组A也是一个幺半群。现在我想combine使用cats.

我想得到相反Array(2, 4, 6)的结果。Array(1, 2, 3) |+| Array(1, 2, 3)我怎样才能做到这一点 ?

0 投票
2 回答
65 浏览

scala - 使用幺半群进行简单的单元测试

假设我测试一个函数echo: String => String,它只是重复输入,使用specs2.

我可以写一些这样的测试:

但是,我更愿意摆脱样板代码。所以我正在使用cats幺半群:

是否有意义 ?如何改进/简化它?幺半群在这里真的有必要吗?我可以在没有monoid的情况下摆脱上面的样板代码吗?

0 投票
1 回答
1775 浏览

scala - 如何使用`asRight`创建带有猫的Either实例

我正在尝试创建一个在 REPL中Either使用的实例:asRight

上面的代码有什么问题?是否可以asRight在 REPL 中使用?

0 投票
2 回答
226 浏览

scala - 将 OOP“装饰器”重构为 Free monad 结构

我有一些“遗留”的 Scala 代码(类似 Java),它进行一些数据访问。有一个装饰器可以跟踪 DAO 方法(收集指标)的使用情况,如下所示:

我正在尝试将其建模为 Free monad。我为 DAO 操作定义了以下代数:

我看到两个选项:

a)我可以制作两个解释器DBOp,一个执行实际的数据访问,另一个执行跟踪,并将它们组合在一起,或者
b)我使 Tracking 成为一个显式代数,并使用 Coproduct 在同一个for组合中使用它们或者
c) 完全不同的东西!

第一个选项看起来更像是一种“装饰器”方法,它与 绑定DBOp,第二个是更通用的解决方案,但需要显式调用“跟踪”代数。

另外,请注意source原始fetchById调用中的参数:它仅用于跟踪。我宁愿从 API 中删除它。

这是实际的问题:我如何为跟踪建模?

0 投票
1 回答
183 浏览

scala - 如何使用猫类型类?

结果为:

为什么它不起作用以及如何解决它?看起来这只是他们文档的副本:

编辑1:

即使import cats.instances.all._按照建议删除它仍然不起作用。现在它崩溃了:

0 投票
1 回答
641 浏览

scala - 猫的穿插缺失?

我只发现了几种都无法访问的方法 - intersperseList

为什么无法访问?或者是否有某个函数可以进行穿插操作?

ScalaZ 的功能示例:

0 投票
1 回答
322 浏览

scala - Monoid 的错误累积

假设我有一个函数列表,E => Either[Exception, Unit]可以在事件时调用E并累积错误以返回Either[List[Exception], Unit]

我想firecats

是否有意义 ?你会如何改进它?
如何更改fire为同时调用subscribers