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

Simple way to apply a list of functions to a value

假设我有一个函数列表 List[A => B] 并且需要一个函数 returns 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] 的方法?

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

import cats.implicits._

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

尽管我认为在这种特殊情况下没有太大区别。