To express parallelism and communication, non-imperative languages
often use constructs that better fit in with their paradigm.
Examples are parallel objects, parallel expressions and AND/OR
parallelism.
Overview of language primitives for
parallel and distributed programming.