ClojureDocs

Nav

Namespaces

commute

clojure.core

Available since 1.0 (source)
  • (commute ref fun & args)
Must be called in a transaction. Sets the in-transaction-value of
ref to:
 (apply fun in-transaction-value-of-ref args)
 and returns the in-transaction-value of ref.
 At the commit point of the transaction, sets the value of ref to be:
 (apply fun most-recently-committed-value-of-ref args)
 Thus fun should be commutative, or, failing that, you must accept
last-one-in-wins behavior.  commute allows for more concurrency than
ref-set.