The par combinator par::a→>b->b x par y Value(ie, thunk bound to x is sparked for speculative evaluation Runtime may instantiate a spark on a thread running in parallel with the parent thread Operationally, x par y y ypically, x Is used inside y: blurRows par(mix blurcols burrOws) All parallelism built up from the par combinator Value (ie, thunk) bound to x is sparked for speculative evaluation. Runtime may instantiate a spark on a thread running in parallel with the parent thread. Operationally, x `par` y = y Typically, x is used inside y: All parallelism built up from the par combinator. par :: a -> b -> b x `par` y blurRows `par` (mix blurCols blurRows)