合并嵌套析取结果类型的左侧
Combine left sides from nested disjunction result type
如果我有一个类型 \/[Errs, \/[Errs, Boolean]]
并且想要组合两个左(两个 Errs
),那么最好的方法是什么 \/[Errs,Boolean]
新的 Errs
将是从早期类型的两个 lefts
中附加两个 Errs
。 Errs
只不过是 case class
case class Errs(errors: List[Err])
而Err
是
case class Err(exceptionMessage: String, customMessage: String, statusCode: Int, extraInfo: Option[String] = None)
我正在尝试将 type1 = \/[Errs, \/[Errs,Boolean]]
转换为 type2 = \/[Errs,Boolean]
,其中 type2
中的 Errs
应该是 "merged" Errs
(不会丢失任何 left
来自两个析取组合的信息。
为了完整起见:因为这是一个析取,您永远不必担心 "merging" 错误——整个事情要么是左侧的 Errs
,要么是右边有一个 Errs
在左边。两者不能同时存在。
如果要折叠两个级别,t1.flatMap(identity)
会将 Errs \/ (Errs \/ Boolean)
变成普通的旧 Errs \/ Boolean
。
如果我有一个类型 \/[Errs, \/[Errs, Boolean]]
并且想要组合两个左(两个 Errs
),那么最好的方法是什么 \/[Errs,Boolean]
新的 Errs
将是从早期类型的两个 lefts
中附加两个 Errs
。 Errs
只不过是 case class
case class Errs(errors: List[Err])
而Err
是
case class Err(exceptionMessage: String, customMessage: String, statusCode: Int, extraInfo: Option[String] = None)
我正在尝试将 type1 = \/[Errs, \/[Errs,Boolean]]
转换为 type2 = \/[Errs,Boolean]
,其中 type2
中的 Errs
应该是 "merged" Errs
(不会丢失任何 left
来自两个析取组合的信息。
为了完整起见:因为这是一个析取,您永远不必担心 "merging" 错误——整个事情要么是左侧的 Errs
,要么是右边有一个 Errs
在左边。两者不能同时存在。
如果要折叠两个级别,t1.flatMap(identity)
会将 Errs \/ (Errs \/ Boolean)
变成普通的旧 Errs \/ Boolean
。