Consider the following Haskell definition of a function for solving quadratic equations (it either fails or returns a
list of one or two real roots):
quadsolve a b c | delta < 0 = error "complex roots"
| delta == 0 = [-b/(2*a)]
| delta > 0 = [-b/(2*a) + radix/(2*a),
This program defines a tree of alternatives, each of which can be evaluated in parallel.