问题标签 [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.
scala - 为什么 Try 猫中默认的隐式 Applicative 实例
在和猫玩耍时,我注意到了一种我无法完全解释的行为:
不是特别有用的方法,随便玩玩。
在完全参数化方法或显式传递所需实例时可以正常工作:
这不进行类型检查:
好的,TryInstances
在解决之前OptionInstances
但是,为什么不Tuple2
期望而不是Try
?之前已TupleInstances
解决TryInstances
并定义一个Applicative
实例。是arity吗?实例的顺序是否有特殊原因?虽然我看到值类型不会影响隐式解析,但为什么不影响呢?
猫 0.9.0,斯卡拉 2.12.1
谢谢你。
编辑毕竟似乎没有Applicative
实例,因此没有,所以这部分问题似乎已经解决。Tuple2
pure
scala - 自由单子公式
据我了解,自由构造允许将任何 Functor 提升到 Monad。当我使用 Cats 库时,即使不提供仿函数实例,我也可以将此 ADT 提升到 monad,这怎么可能?
同样在传统(简单)方法中,当 Free 定义为
我将不得不继续编码我的 ADT:
当我使用 Cats 时,我不必提供 cont 参数,为什么?
scala - 使用 Monads Transformers 堆叠 Monad
我正在学习 Monad Transformers,我正在尝试学习如何嵌套 Monad。
所以假设我想创建一个Future[Either[String, Option[A]]]
所以为了模拟这个形状我做了
现在我做
我得到
所以这看起来是正确的。我在一个选项里面有一个 1,它在一个权利里面,它在一个未来的成功里面。好的!
但如果我这样做
我希望我能得到Future(Success(Right(None)))
,但我看到了输出
另外,如果我想要类似的东西
如果我尝试做
输出很奇怪
那根本不是我的形状,因为现在有两个非他莫属......
arrays - 如何组合幺半群类型的数组?
一个幺半群类型的列表或数组A
也是一个幺半群。现在我想combine
使用cats
.
我想得到相反Array(2, 4, 6)
的结果。Array(1, 2, 3) |+| Array(1, 2, 3)
我怎样才能做到这一点 ?
scala - 使用幺半群进行简单的单元测试
假设我测试一个函数echo: String => String
,它只是重复输入,使用specs2
.
我可以写一些这样的测试:
但是,我更愿意摆脱样板代码。所以我正在使用cats
幺半群:
是否有意义 ?如何改进/简化它?幺半群在这里真的有必要吗?我可以在没有monoid的情况下摆脱上面的样板代码吗?
scala - 如何使用`asRight`创建带有猫的Either实例
我正在尝试创建一个在 REPL中Either
使用的实例:asRight
上面的代码有什么问题?是否可以asRight
在 REPL 中使用?
scala - 将 OOP“装饰器”重构为 Free monad 结构
我有一些“遗留”的 Scala 代码(类似 Java),它进行一些数据访问。有一个装饰器可以跟踪 DAO 方法(收集指标)的使用情况,如下所示:
我正在尝试将其建模为 Free monad。我为 DAO 操作定义了以下代数:
我看到两个选项:
a)我可以制作两个解释器DBOp
,一个执行实际的数据访问,另一个执行跟踪,并将它们组合在一起,或者
b)我使 Tracking 成为一个显式代数,并使用 Coproduct 在同一个for
组合中使用它们或者
c) 完全不同的东西!
第一个选项看起来更像是一种“装饰器”方法,它与 绑定DBOp
,第二个是更通用的解决方案,但需要显式调用“跟踪”代数。
另外,请注意source
原始fetchById
调用中的参数:它仅用于跟踪。我宁愿从 API 中删除它。
这是实际的问题:我如何为跟踪建模?
scala - 如何使用猫类型类?
结果为:
为什么它不起作用以及如何解决它?看起来这只是他们文档的副本:
编辑1:
即使import cats.instances.all._
按照建议删除它仍然不起作用。现在它崩溃了:
scala - 猫的穿插缺失?
我只发现了几种都无法访问的方法 - intersperseList
。
为什么无法访问?或者是否有某个函数可以进行穿插操作?
ScalaZ 的功能示例:
scala - Monoid 的错误累积
假设我有一个函数列表,E => Either[Exception, Unit]
可以在事件时调用E
并累积错误以返回Either[List[Exception], Unit]
。
我想fire
用cats
是否有意义 ?你会如何改进它?
如何更改fire
为同时调用subscribers
?