liveBook · Manning

Pvalues

As explained in Clojure: The Essential Reference

pvalues is a Clojure macro that evaluates multiple expressions in parallel and returns their results as a lazy sequence.

pvalues is a Clojure macro for evaluating any number of expressions in parallel and returning their results as a lazy sequence. Results retain expression order, even though evaluation proceeds concurrently through futures. section 9.1.5

Its contract is small but useful:

  • Accepts any number of valid Clojure expressions, including no expressions. section 9.1.5
  • Returns a lazy sequential result containing each expression’s value in input order. section 9.1.5
  • Builds on pmap, alongside pcalls, for straightforward parallel computation. section 9.1.5

Evaluating independent expressions

(pvalues (+ 1 1) (Math/sqrt 2) (str "last" " " "item")) ;; (2 1.4142135623730951 "last item")

How Clojure: The Essential Reference covers it

How deep it goes
Defines inputs, laziness, ordering, and output, but does not detail pvalues internals beyond its foundation on pmap and futures.
Examples
Uses arithmetic, square-root, and string-concatenation expressions that produce an ordered result sequence.
What it assumes
Assumes familiarity with valid Clojure expressions, macros, lazy sequences, and basic parallel computation.
What you can do after
Apply it via pvalues to evaluate multiple independent expressions in parallel and consume their ordered lazy results.
How it connects
Connects pvalues with pmap, pcalls, futures, parallel computation, and lazy sequences.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Clojure: The Essential Reference. The section links point to the parts of the book it draws on.