函数式编程中的属性测试:原理、实践与拓展
1. 高阶函数测试与未来方向
在当前的测试库中,虽然能较为丰富地生成数据,但在测试高阶函数方面存在不足,尤其是缺乏生成函数的有效方法。
1.1 练习题相关
- 练习 8.16 :要求编写一个更复杂的
Par[Int]生成器,以构建比之前更深度嵌套的并行计算。可通过生成List[Int]并将其折叠为单个Par[Int]来实现,示例代码如下:
val gpy2: Gen[Par[Int]] =
choose(-100, 100).listOfN(choose(0, 20)).map(ys =>
ys.foldLeft(Par.unit(0))((p, y) =>
Par.fork(p.map2(Par.unit(y))(_ + _))))
还可提取新的通用函数 parTraverse 来优化实现:
extension [A](self: List[A])
def parTraverse[B](f: A => Par[B]): Par[List[B]] =
self.foldRight(Par.unit(Nil: List[B]))((a, pacc) =>
Par.fork(f(a).
超级会员免费看
订阅专栏 解锁全文
1225

被折叠的 条评论
为什么被折叠?



