问题标签 [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 - 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]
。
scala - 在 Slick 中过滤和混合单子以进行理解和 Cats
我有以下目标:创建一个单子,添加一个具有以下计算流程的用户:
- 检查用户是否存在指定的电子邮件,如果不存在则:
- 检查给定的凭据是否正常(密码足够长等)。如果他们没问题,那么:
- 将用户保存到数据库
我的第一个“草稿”是这样的:
任何想法在我可以db.run(...)的一个单子计算中写下来的最佳方法是什么?我正在使用 Cats + Slick 3.0。如果有帮助,我还从https://groups.google.com/forum/?fromgroups#!topic/scalaquery/HrvrvyEIopw写了一个简单的隐式 dbioMonad。
scala - 为什么在这种类型依赖路径场景中不会触发隐式
假设我在一个特征中定义了一些类型,它应该实现一些类型类(比如仿函数):
现在,我想使用这个库。以下工作正常:
但是,当在带有参数的方法中使用它时,隐式的导入不起作用(注释掉的行无法编译),您必须自己编写隐式:
为什么会这样/可以采取什么措施。
scala - 为什么Scalaz(和Cats)到处都使用大写变量
对于(缩减)示例,
F
在这种情况下是一个变量,所以我希望f
在类似 Java 的库中看到它。
为什么 Scalaz 使用大写约定?这是一个haskell约定吗?
为什么?
额外的功绩,背后的动机是什么?到目前为止,它比有用更令人困惑,但我知道我错过了公约背后的原因。
scala - 用于复合材料的 Scala 类型类
我有一个总和类型,映射:
我有一个类型类定义如下:
在某些情况下:
我找不到将隐式实例传递给上面的 flatMap 的方法。我得到的错误是我缺少 ParameterLoader [Mapping] 的实例。有没有办法告诉编译器它应该使用范围内的任何类型类实例?
scala - 如何在 Scala 中使用 for 而不是 flatMap/map?
我在堆栈中了解 Scala 的for
工作原理。我认为下面的代码可以用for
虽然我不知道怎么写。有人可以解释一下我该怎么做吗?
scala - 猫嵌套 Xor catchOnly leftMap
我有一个底层的 java api,它的方法可以抛出一个自定义异常,该异常可以具有业务意义或可以返回不同的结果类型(通过动态类实例化)。方法返回结果的地方我有一个A Xor B
where A 是错误类型,但我想使用Xor.catchOnly[CustomException]
leftMap 方法将异常转换为 A。
我可以通过xorCatchOnlyString
调用来做到这一点,但我试图概括并提出,zor
但这会引发异常,而不是像我希望的那样捕获它。有什么方法可以按照我的要求做zor
吗?
scala - 如何展平一系列猫的 ValidatedNel 值
我需要将一系列cats.data.ValidatedNel[E, T]
值展平为单个ValidatedNel
值:
我可以这样做:
但想知道是否存在预定义的库方法。
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
也很有用。
我做错了吗?有某种单子变压器吗?
scala - 如何使用笛卡尔积|@| 最新版本的猫?
我已经将一些使用猫 0.2 的代码迁移到了猫 0.6,但我的代码不再工作了:
编译器说:
我在文档中没有找到任何与此相关的内容,我应该进行导入还是声明隐式或其他内容?
我已经设法使用product
,|@|
但它不像它产生嵌套元组那样方便。假设我有 4 个经过验证可以组合:
谢谢