如何映射到内部函子 (ValidationNel[A, Option[B]])
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 来检索 Validation
的 Functor
实例。
这是代码:
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)
}
我需要一个组合器将 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 来检索 Validation
的 Functor
实例。
这是代码:
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)
}