[英]How to map on a inner Functor (ValidationNel[A, Option[B]])
我需要一个组合器来将ValidationNel[A, Option[B]]
转换为ValidationNel[A, Option[C]]
以在验证成功时映射(通过映射该选项)。
这是代码:
def mapmap[A, B, C](valid: ValidationNel[A, Option[B]], f: B => C) : ValidationNel[A, Option[C]] =
valid.map(_.map(f))
我也尝试过编写函子(但不幸的是,它不能编译):
def nestedMap[A, B, C](valid: ValidationNel[A, Option[B]])(f: B => C) : ValidationNel[A, Option[C]] = {
val composed = Functor[Validation].compose[Option]
composed.map(valid, f)
}
有没有更好的办法 ?
我们需要一个lambda类型来检索Functor
实例以进行Validation
。
这是代码:
def nestedMap[A, B, C](valid: ValidationNel[A, Option[B]])(f: B => C) : ValidationNel[A, Option[C]] = {
val composed = Functor[({type l[a] = ValidationNel[A, a]})#l].compose[Option]
composed.map(valid)(f)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.