纯函数式并行编程中的代数法则与实现
1. 并行过滤函数与其他并行计算尝试
首先,我们要实现一个并行过滤函数 parFilter ,它可以并行地过滤列表中的元素。其函数签名如下:
def parFilter[A](as: List[A])(f: A => Boolean): Par[List[A]]
除了 parFilter ,我们还可以尝试编写其他有用的并行计算函数,例如:
- 寻找并行求和函数的更通用版本,并使用它并行地找出 IndexedSeq 中的最大值。
- 编写一个函数,它接收一个段落列表( List[String] ),并并行计算所有段落中的总单词数,同时思考如何对该函数进行泛化。
- 基于 map2 实现 map3 、 map4 和 map5 。
2. API 的代数法则
在设计 API 时,我们可以将其视为一个代数系统,通过类型签名来推导实现,就像简化代数方程一样。这种方式让我们可以暂时忽略具体的领域,专注于类型的匹配。同时,明确 API 应遵循的法则是很有帮助的,它能凸显一些在非正式推理时不易察觉的设计选择。
2.1 映射法则
我们可以先从一个具体的例子来理解映射法则:
超级会员免费看
订阅专栏 解锁全文
845

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



