并行任务组合器的演变:从基础到动态扩展
1. 迈向动态可扩展的并行任务
在并行任务处理领域,为了满足日益复杂的工作流需求,并行组合器不断发展。最初,“AND”和“OR”组合器是基础的并行任务处理方式。例如,在早期的系统中,它们被广泛用于简单的任务组合。
随着需求的增加,人们发现可以通过高阶函数定义“瑞士军刀”式的组合器,以减少所需的核心组合器数量。在当前的系统中, parallel 组合器就是这样一个例子:
parallel :: ([a] → Bool) ([a] → b) ([a] → b) [Task a] → Task b
| iTask a & iTask b
通过合适的参数化, parallel 可以替代核心组合器 -||- 和 -&&- :
(-||-) infixr 3 :: (Task a) (Task a) → Task a | iTask a
(-||-) ta1 ta2 = parallel (not o isEmpty) first undef [ta1, ta2]
where
first [a] = a
(-&&-) infixr 4 :: (Task a) (Task b) → Task (a, b) | iTask a & iTask b
(-&&-) ta tb = par
超级会员免费看
订阅专栏 解锁全文
2796

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



