Par and seq
Jump to navigation
Jump to 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
- Haskell-Cafe: 'par' - why has it the type a -> b -> b ?