问题标签 [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 - 使用包裹在选项中的流
我正在使用一些嵌套Stream
的 s 并希望对它们使用 for comprehension 语法:
但是,该makeBs
函数返回一个Option[Stream[B]]
. 我希望Option
自动解包。另外,None
如果makeBs
失败,我希望整个函数返回。所以新函数看起来像这样:
唯一的变化是函数的类型。
我怎样才能完成这样的事情?可以StreamingT
从猫或StreamT
斯卡拉兹那里得到帮助吗?
有些类型是灵活的。makeBs
可以返回Stream[Option[B]]
,而不是Option[Stream[B]]
让事情变得更简单。
我需要使用 scala 标准库Stream
类型。
scala - 猫有相当于 scalaz 的 traverseM 吗?
猫中是否有与traverseM
from scalaz 等效的功能?我还没有找到任何与类型签名匹配的东西。这是来自 scalaz scala 文档的签名和描述:
一个 traverse 版本,其中一个后续的单子连接应用于内部结果。
根据猫中的其他函数来定义自己是相当简单的,traverseM
但如果它可用,我更愿意使用库中的函数。
scala - 导入 FlatMap 实例会破坏 Applicative builder 语法
对于我的示例,我将使用Option
s 但在我的实际代码中我使用的是自定义数据类型。添加导入import cats.std.option._
将解决示例中的问题。我有一些看起来像这样的代码:
这段代码正在编译和运行得很好。
接下来我Kleisli
编写了一些返回的函数Option
:
代码没有编译,因为我的数据类型没有FlatMap
实例。我创建了一个:
导入FlatMap
实例(或在同一文件中定义它)后,构建器语法不再编译。我得到错误:
为什么导入FlatMap
实例会破坏构建器语法?我怎样才能解决这个问题?
scala - 是什么 ?类型?
我正在尝试为Monad
具有多个类型参数的类型实现猫实例。我查看了猫Either
实例,看看它是如何在那里完成的。来自猫的部分Either
Monad
实例代码复制如下:
它无法编译并出现以下错误:error: not found: type ?
为我自己的类型创建实例时,类型是什么?
?如何使用它?
scala - 有没有更聪明的方法来处理猫?
我想要实现的是可序列化和可组合的进程描述符。基本上我将创建一些原始Processor
(可序列化),然后我希望能够将它们组合成更高Processor
的顺序,然后整个事情应该保持自动可序列化。这是我当前的实现,但是我怀疑使用某些猫类型类/数据结构可以使用更优雅的方法来执行此操作。我想不出一种方法来使用那些强大的工具,如 Free、Kleisli 或 State,我感到很愚蠢。我的挑战是我的状态类型,即 中的数据字段DataWithContext
,不断变化。
但一定有办法克服,不是吗?
scala - 在 IntelliJ 中使用猫库时出现错误错误
我正在使用猫 Scala 库,而 IntelliJ IDE 似乎在努力使用隐式:
这是一个简单的例子:
在 IntelliJ 中,此代码以红色突出显示。Make Project
但我可以使用或命令行构建得很好。
现在的错误是:
Nothing[List[Nothing]] 类型的表达式不符合预期的类型 Option[List[A]]
其他时候错误类似于:
值序列不是 List[Option[A]] 的成员
这是 IntelliJ 中的错误还是我缺少一些配置?
我正在使用带有 Scala 插件版本 2.0.4 的 IntelliJ 15.0.2。
scala - Monads VS Applicative functors for Futures
假设我想聚合来自 2 个远程服务的数据,并尽可能快地提供响应:
我知道这个按顺序执行异步任务:
虽然这是并行执行它们,因为异步任务在被顺序链接之前被触发:
然而,这种差异对我来说有点太隐晦了,可能有人一开始并没有注意到它。
应用程序也解决了工作
有人能告诉我我宁愿在应用程序和单子之间使用什么来执行并行异步计算吗?每种方法的优缺点是什么?
scala - Scala GADT 实例仿函数
在哈斯克尔我得到:
在 Scala 中,我想出了:
但是Bar(40).map(_+2)
给了我:
我对 Scala 相当陌生,不太了解继承方式。
我错过了什么?
scala - 使用 Unapply 提取相同的类型类
我有以下情况,给定两种类型MA
和MB
,我希望能够证明它们不仅具有 ,Applicative
而且它们都具有相同的基本形状。我尝试执行以下操作:
但不断遇到不同的隐含(即这不起作用。)类似的事情可以通过A
类型参数Unapply
和工作的类型投影来完成。
这有一种方法可以采用这两种类型并能够证明它们实际上是由相同类型的类实例支持的吗?
scala - Intellij 的 Scala 类型推断不同于 REPL
我正在考虑cats
在我的项目中使用库以在Either
. 然而,在 Intellij IDEA 中,当我这样做时Show type
,我看到了一个完全奇怪的推断类型。同时,如果我将此代码复制并粘贴到sbt console
中,我会得到漂亮而干净的类型。这是示例:
如您所见,该变量r
有一个很好的类型:Either[String, List[Int]]
.
但是,Intellij 推断出以下怪物:
我不想让我的同事看到这种类型的痛苦,让我独自理解它,因为它会显着降低我的carma。我已经尝试过使用最新的 Intellij 16.1 EAP 和 EAP 构建的 Scala 插件,以及它们的稳定版本,都是一样的。
我想,此时我无能为力,但也许,只是也许,有一些解决方法?
PS 像这样的事情(即工具支持)减缓了 FP 的采用,至少不低于 FP 固有的概念复杂性。:(
Intellij 跟踪器中的 PPS 问题在这里。