问题标签 [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 回答
93 浏览

scala - Scala 类型类,不能很好地与继承一起工作

我目前编写了一些实现类型类的类。我为此目的使用猫。在这种情况下,我有课程A[T]B[T] <: A[T]. A[T]是一个单子,所以在导入正确的库时,我可以写

但我不会写

因为 scala 没有找到 flatMap 运算符。相反,我必须写

为此工作。这很尴尬,因为我希望子类继承超类的方法。

为了完整起见,我添加了一个没有依赖关系的最小示例来显示问题。其中,Filterable是一个类型类,由S.

failing定义无法编译,因为q.op未找到。另一方面,working通过首先转换为S. 我可以做些什么来使该failing示例适用于我的图书馆的用户?您必须强制转换为父类型才能使用它的方法,这感觉非常不自然。

请注意,我无法定义第二个实现的隐式对象,Filterable[Q]因为(new Q[Int]()).filter应该是 typeS[Int]而不是Q[Int]

0 投票
1 回答
906 浏览

scala - 在 Slick 中过滤和混合单子以进行理解和 Cats

我有以下目标:创建一个单子,添加一个具有以下计算流程的用户:

  1. 检查用户是否存在指定的电子邮件,如果不存在则:
  2. 检查给定的凭据是否正常(密码足够长等)。如果他们没问题,那么:
  3. 将用户保存到数据库

我的第一个“草稿”是这样的:

任何想法在我可以db.run(...)的一个单子计算中写下来的最佳方法是什么?我正在使用 Cats + Slick 3.0。如果有帮助,我还从https://groups.google.com/forum/?fromgroups#!topic/scalaquery/HrvrvyEIopw写了一个简单的隐式 dbioMonad。

0 投票
1 回答
59 浏览

scala - 为什么在这种类型依赖路径场景中不会触发隐式

假设我在一个特征中定义了一些类型,它应该实现一些类型类(比如仿函数):

现在,我想使用这个库。以下工作正常:

但是,当在带有参数的方法中使用它时,隐式的导入不起作用(注释掉的行无法编译),您必须自己编写隐式:

为什么会这样/可以采取什么措施。

0 投票
0 回答
191 浏览

scala - 为什么Scalaz(和Cats)到处都使用大写变量

对于(缩减)示例,

F在这种情况下是一个变量,所以我希望f在类似 Java 的库中看到它。

为什么 Scalaz 使用大写约定?这是一个haskell约定吗?

为什么?

额外的功绩,背后的动机是什么?到目前为止,它比有用更令人困惑,但我知道我错过了公约背后的原因。

0 投票
1 回答
107 浏览

scala - 用于复合材料的 Scala 类型类

我有一个总和类型,映射:

我有一个类型类定义如下:

在某些情况下:

我找不到将隐式实例传递给上面的 flatMap 的方法。我得到的错误是我缺少 ParameterLoader [Mapping] 的实例。有没有办法告诉编译器它应该使用范围内的任何类型类实例?

0 投票
2 回答
375 浏览

scala - 如何在 Scala 中使用 for 而不是 flatMap/map?

我在堆栈中了解 Scala 的for工作原理。我认为下面的代码可以用for虽然我不知道怎么写。有人可以解释一下我该怎么做吗?

0 投票
1 回答
374 浏览

scala - 猫嵌套 Xor catchOnly leftMap

我有一个底层的 java api,它的方法可以抛出一个自定义异常,该异常可以具有业务意义或可以返回不同的结果类型(通过动态类实例化)。方法返回结果的地方我有一个A Xor Bwhere A 是错误类型,但我想使用Xor.catchOnly[CustomException]leftMap 方法将异常转换为 A。

我可以通过xorCatchOnlyString调用来做到这一点,但我试图概括并提出,zor但这会引发异常,而不是像我希望的那样捕获它。有什么方法可以按照我的要求做zor吗?

0 投票
1 回答
7672 浏览

scala - 如何展平一系列猫的 ValidatedNel 值

我需要将一系列cats.data.ValidatedNel[E, T]值展平为单个ValidatedNel值:

我可以这样做:

但想知道是否存在预定义的库方法。

0 投票
1 回答
873 浏览

scala - 如何将 free monad 与 Future[M[_]] 一起使用

我已经使用免费的 monad 为 ETL 过程实现了一种简单的语言。当List用作数据获取和存储的输入和输出时,一切正常。但是我正在使用异步库并使用Future[List]

常见的导入和定义

List

不合作Future[List]

正如预期的那样,从flatMap/返回的类型map是错误的 - 我没有得到OpsF[Future]Future[OpsF]

我目前的解决方法是store接受Future[List[Record]]并让解释器映射到Future,但感觉很笨拙。

该问题并非特定于List-例如Option也很有用。

我做错了吗?有某种单子变压器吗?

0 投票
1 回答
2124 浏览

scala - 如何使用笛卡尔积|@| 最新版本的猫?

我已经将一些使用猫 0.2 的代码迁移到了猫 0.6,但我的代码不再工作了:

编译器说:

我在文档中没有找到任何与此相关的内容,我应该进行导入还是声明隐式或其他内容?

我已经设法使用product|@|但它不像它产生嵌套元组那样方便。假设我有 4 个经过验证可以组合:

谢谢