gpt4 book ai didi

Scalaz 注入(inject)左右使用所需的最小导入

转载 作者:行者123 更新时间:2023-12-05 00:30:20 29 4
gpt4 key购买 nike

简单的问题,我已经看过这个了:Managing imports in Scalaz7 ,但我不知道如何最小化注入(inject) rightleft方法到我的对象中以构造 \/ 的实例.

我确实尝试过:
import syntax.ToDataOpsTo... 的其他变体如syntax.ToIdOps正如 http://eed3si9n.com/learning-scalaz-day13 中的建议.

简单的例子:

import scalaz.{\/, syntax}
import // What goes here

class Test {

def returnEitherT(h: Int): String \/ Int = {
h right
}
}

谢谢,杰森。

===========

我通过使用 import syntax.id._ 解决了它但我不确定为什么会这样。

最佳答案

syntax.id包含“普通”值的语法,即它对值的类型没有任何限制。

通常,当您为 x.op 形式的表达式导入语法时,导入语法的位置取决于 x 的类型, 因为 op必须是对该类型的有效操作。

因为\/[A, B]使用语法 x.left 对 A 和 B 进行普遍量化和 x.rightx 的类型没有任何限制.因此,它属于 syntax.id .

要了解哪些语法在哪里可用,有必要查看构成 syntax 的一些模块的来源。包。例如,对比 IdOps[A] ,它具有任何 A 的语法, 与 FunctorOps[F[_],A] ,它的要求是 FFunctor .

我不知道名字在哪里id确切地来自;也许它与恒等仿函数有关Id , 可以定义为 type Id[A] = A .如果您必须为可用于 syntax.id 的值选择类型约束, 那就是他们在 Id .在 A 中被普遍量化,操作无法知道 A 的值的结构,因此它们不能是 A 上的结构改变操作.

关于Scalaz 注入(inject)左右使用所需的最小导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16212351/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com