Beispiel: Mergesort

Sequentieller Algorithmus:

merge :: Ord a => [a] -> [a] -> [a]
split :: [a] -> ([a],[a])
msort :: Ord a => [a] -> [a]
msort [] = [] ; msort [x] = [x] ; msort xs = 
    let ( here, there ) = split xs
        mshere  = msort here
        msthere = msort there
    in  merge mshere msthere
Strategie-Annotation in msort,

dabei Auswertung der Teilresultate erzwingen.

vgl. http://article.gmane.org/gmane.comp.lang.haskell.parallel/181


Johannes Waldmann 2013-02-01