按条件替换List中的元素

St.*_*rio 0 functional-programming scala list scalaz scala-cats

我有一个非常大val s: List[Int] = //...,一个功能f: Int => Boolean和一个功能transform: Int => Int.

问题:我想创造另一个List[Int],使得所有元素e: Int的的s: List[Int],这样f(e) = true与更换transform(e).

我看了一下cats-mtl FunctorEmpty(坚持函数编程风格),但它似乎不适用于我的情况.也许某些cats/ scalaz数据结构在这里有用吗?还是其他任何方式?

And*_*kin 6

s.map{ e => if(f(e)) transform(e) else e }
Run Code Online (Sandbox Code Playgroud)