问题标签 [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 投票
1 回答
4484 浏览

scala - 如何使用猫和状态单子

我第一次使用来解决代码出现的第一,我想知道是否有可能改进事情。

给定update具有以下签名 的方法def update(i: Instruction): PosAndDir => PosAndDir

我想出了:

并且

更准确地说,问题是:

  1. 为什么我们需要调用.value(使用 scalaz,它是透明的)?
  2. 有没有办法update2用理解来提高可读性?
  3. 猫中有没有Applicative实例Seq(我知道scalaz中没有)。?
  4. 有什么改进代码的想法吗?
0 投票
1 回答
1251 浏览

scala - Scala Cats: is there an ensure method on Either?

I have this piece of code on the Xor object of cats

Now since Xor has been removed, I am trying to write something similar using Either object

but this does not work because the return type of ensuring is Either.type

I can ofcourse write an if. but I want to do the validation with the cats constructs.

0 投票
2 回答
628 浏览

scala - 猫:如何从隐式中找到特定类型

我有这段代码可以编译并且工作正常

但是我不喜欢导入,cats.implicits._因为那里的类太多了。我尝试导入与笛卡尔相关的特定内容,例如

但这些都不起作用。作为一个新手,我发现隐式导入非常令人困惑,因为它们只有 1000 个,而且名称不是很明显。我唯一的选择是导入整个宇宙import cats.implicits._并停止思考它。

事实上,我对 和 有更广泛cats.implicitscats.instances._困惑cats.syntax._。到目前为止,我只是通过反复试验导入这些。我不确定何时导入什么。

0 投票
1 回答
485 浏览

scala - 如何用猫折叠一个内胚层集合

给定一个函数

我想写一个很常见的组合器g

简单的实现只使用经典的 scala

我尝试使用Foldable,但遇到编译问题。

错误是

我成功了State

我有一些问题 :

  1. Monoid猫的内同性是否存在
  2. 当我import一起使用所有语句时,你能解释编译问题吗?有什么诀窍可以轻松找到正确的导入吗?
  3. 在这种情况下是State一个过于强大的抽象吗?
  4. 有没有更好的办法 ?

[更新] 我找到了 1 的解决方法。

但我还是foldMapK要避免样板……</p>

0 投票
3 回答
759 浏览

scala - 自由单子的条件行为

我在这里学习教程:http: //typelevel.org/cats/datatypes/freemonad.html并尝试修改它以使用键值存储前面的缓存。到目前为止,这是我想出的,但我遇到了编译器错误valueGetOperation。我明白为什么会出现编译错误,只是不明白如何解决它。使用免费单子时条件行为的最佳实践是什么?

0 投票
2 回答
183 浏览

scala - 猫作家矢量是空的

我编写了这个简单的程序,试图了解 Cats Writer 的工作原理

该程序有效,输出为

但是为什么向量是空的?它不应该包含我使用“tell”方法的所有字符串吗?

0 投票
1 回答
226 浏览

scala - 使用 Scala Cats 将函数列表应用于值

在haskell中,我可以对字符串执行以下操作

我有点茫然如何使用 Cats 以更好的方法解决这个问题。我目前有类似的东西

是否有可以使用 Cats 完成此任务的 Sequence 或 SequenceU 的实现?

0 投票
1 回答
290 浏览

scala - 如何在 Scala 中干净地验证函数输入并返回 Future

我有一个函数(我删除了类型,因为我更关心如何将事物拼凑在一起):

我正在尝试验证选项,然后调用返回未来的函数,但我不知道如何在惯用的 scala 中执行此操作。

如果我这样做:

它自然会返回一个 Option[Future]。

我也可以这样做opt1.flatMap(opt2.map(functionThatReturnsAFuture)).sequence,但这仍然很丑陋。

是否有任何惯用的 scala(或 scala + 猫)方式进行这样的验证并返回 Future?

谢谢!

0 投票
1 回答
635 浏览

scala - Scala 模式匹配异步(或任何 monad)守卫

今天我遇到了以下问题:我进行了一些模式匹配,简化如下:

现在不幸的是,我发现我的警卫/提取器将是Future[Boolean]. 想象一下,他们调用外部 Web 服务来获取结果。显然,我不能将守卫或提取器模式与 Future(或任何单子)一起使用。

所以现在我想异步检查每个条件,但在第一个成功的条件下中断。

基本上我想要正常的单子流程的反面——意思是在第一次成功时停止。
我的实现似乎运行良好,但我很想知道是否有更简单的方法或在这种情况下您将使用哪种模式。

请记住,为了成为示例,我的示例非常简单。

(顺便说一句。它是 scala 2.12)
我很乐意提出建议:)

0 投票
1 回答
646 浏览

scala - 将多个 Validated 合并为一个

我写了这段代码

而不是|@|在每个中间验证上进行并&&在地图内部进行......我可以用更简单的方式编写它吗?我想单独尝试做|@|然后&&使代码看起来有点吓人。(抱歉我还不是绝地武士)