Wie schreibe ich eine parallele Reduktion mit Strategien in Haskell?

ei Hochleistungsrechnern werden Summen, Produkte usw. häufig mit einer "parallelen Reduktion" berechnet, dien Elemente und Vervollständigungen in O (logn) Zeit (bei genügend Parallelität). In Haskell verwenden wir normalerweise einfalte für diese Art der Berechnung, aber die Auswertungszeit ist in der Länge der Liste immer linear.

Data Parallel Haskell hat einige davon eingebaut, aber was ist mit dem gemeinsamen Rahmen einer Liste? Können wir das mit @ machControl.Parallel.Strategies?

So, unter der Annahme,f ist assoziativ, wie schreiben wir

parFold :: (a -> a -> a) -> [a] -> a

damitparFold f xs braucht nur Zeitlogarithmus inlength xs?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage