importPour l'utiliser : import Data.Parallel
Data.Parallel — combinateurs data-parallèles déterministes (parMap / parReduce)
Synopsis
parMap : (a -> b) -> List a -> List b
Applique une fonction PURE sur une liste, en data-parallèle. parMap f xs ≡ map f xs — même résultat, même ordre. f doit être pure : une fonction à effets est rejetée au site d'appel par le type (le garde-fou de pureté ci-dessus). La v1 s'exécute séquentiellement ; un incrément futur la parallélisera sans changer cette API.
parReduce : (a -> a -> a) -> a -> List a -> a
Réduit une liste avec un opérateur ASSOCIATIF op et son élément neutre z, en data-parallèle. parReduce op z xs ≡ foldl op z xs ; comme op est associatif d'élément neutre z, cela vaut aussi foldr op z xs et tout regroupement équilibré, de sorte que le résultat ne dépend pas de la façon dont la réduction est découpée. Il revient à l'appelant de garantir que op est associatif et que z est un élément neutre des deux côtés — p. ex. parReduce (+) 0, parReduce (*) 1, parReduce (<>) mempty. (Pour d'autres op/z la valeur reste foldl op z xs, mais la loi d'invariance par parallélisation ne tient plus.) Pile constante. La v1 s'exécute séquentiellement.