# Par and seq

### From HaskellWiki

The functions and have much in common.
let you start a computation in parallel
and forces a computation to actually take place (avoiding lazy evaluation).
You could also define a function which computes the arguments of a two-argument function in parallel before feeding them to .
The function is also universal, because you can define in terms of .
You can see, that is the more basic combinator, because it scales to any number of arguments.

par

seq

They have the same signature and thus the same use patterns.

The functionpar

seq

par :: a -> b -> b seq :: a -> b -> b

par2

f

f

par2 :: (a -> b -> c) -> (a -> b -> c) par2 f x y = x `par` y `par` f x y

par2

par

par2

par = par2 (\ _x y -> y)

par

## See also

- Haskell-Cafe: 'par' - why has it the type a -> b -> b ?