Personal tools

Par and seq

From HaskellWiki

Jump to: navigation, search
The functions
par
and
seq
have much in common.

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

The function
par
let you start a computation in parallel and
seq
forces a computation to actually take place (avoiding lazy evaluation).
par :: a -> b -> b
seq :: a -> b -> b
You could also define a function
par2
which computes the arguments of a two-argument function
f
in parallel before feeding them to
f
.
par2 :: (a -> b -> c) -> (a -> b -> c)
par2 f x y = x `par` y `par` f x y
The function
par2
is also universal, because you can define
par
in terms of
par2
.
par = par2 (\ _x y -> y)
You can see, that
par
is the more basic combinator, because it scales to any number of arguments.

See also