Scalaz在预应用程序构建周围翻转嵌套的存在/验证单一文本
发布时间:2020-12-14 04:53:35 所属栏目:百科 来源:网络整理
导读:我有以下内容: gt.map(_.singleVal) |@| lt.map(_.singleVal) 它们是Option(Validation(T))类型,但它们应该是Validation(Option(T)) 某些东西不存在是可以的,但是存在无效的东西是不行的.换句话说,我希望将None解释为Success(无) 这让我感到非常普遍. scala
我有以下内容:
gt.map(_.singleVal) |@| lt.map(_.singleVal) 它们是Option(Validation(T))类型,但它们应该是Validation(Option(T)) 某些东西不存在是可以的,但是存在无效的东西是不行的.换句话说,我希望将None解释为Success(无) 这让我感到非常普遍. scalaz中有没有这样做的糖吗? 解决方法
我将假设通过验证(T)你的意思是像ValidationNel [Throwable,T],因为验证[T]不是任何东西,验证[E,T]没有应用程序仿函数实例,除非E有一个半群实例.
您正在寻找的可能是遍历(如果您想避免写出类型参数,则可以遍历).您可以编写以下内容,例如: scala> case class Foo(singleVal: ValidationNel[Throwable,String]) defined class Foo scala> val x = some(Foo("hey".success)) x: Option[Foo] = Some(Foo(Success(hey))) scala> val y = none[Foo] y: Option[Foo] = None scala> println(x.traverseU(_.singleVal)) Success(Some(hey)) scala> println(y.traverseU(_.singleVal)) Success(None) 通常,如果M具有Traverse实例并且N具有应用仿函数实例,则可以在给定函数A =>的情况下将M [A]变换为N [M [B]].带有遍历的N [B](有关其他讨论,请参见my answer here). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |