假设我已经获得了一个函数列表List[A => B]
,并且需要一个为List[B]
类型的给定值返回A
的函数:
def foo[A, B](fs: List[A => B]): A => List[B] = a => fs.map(_.apply(a))
是否有更简单(可能有cats
)方式来撰写List[A => B] => A => List[B]
?
答案 0 :(得分:2)
正如@Oleg指出的那样,您可以使用Applicative
来生成函数:
import cats.implicits._
def foo[A, B](fs: List[A => B]): A => List[B] = a => fs ap List(a)
虽然我认为在这种特殊情况下并没有太大的区别。