将函数列表应用于值的简单方法

时间:2017-07-18 07:37:27

标签: scala functional-programming scala-cats

假设我已经获得了一个函数列表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]

1 个答案:

答案 0 :(得分:2)

正如@Oleg指出的那样,您可以使用Applicative来生成函数:

import cats.implicits._

def foo[A, B](fs: List[A => B]): A => List[B] = a => fs ap List(a)

虽然我认为在这种特殊情况下并没有太大的区别。