繁体   English   中英

如何映射内部函子(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类型来检索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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM