From 4ef2e36adb95e759bb54acc2836d8c0aca1de664 Mon Sep 17 00:00:00 2001 From: "Mario T. Lanza" Date: Tue, 28 May 2024 11:04:01 -0400 Subject: [PATCH] edit copy --- adopting-the-clojure-mindset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adopting-the-clojure-mindset.md b/adopting-the-clojure-mindset.md index 963252cf..78d8fa19 100644 --- a/adopting-the-clojure-mindset.md +++ b/adopting-the-clojure-mindset.md @@ -60,7 +60,7 @@ Immutable `assoc` is tailor-made for truly persistent types, like records. But The same applies to `conj` or any other command one imagines. It's possible to simulate change against any type. All simulation requires is an atom or, in Atomic, a cell. The cell contains the state and [`swap`](https://clojuredocs.org/clojure.core/swap!)s updates against it using simulated commands. -What this effectively means is the above table can, as desired, be fully realized so that any mutable operation can also be simulated, written as reductive operations. What this reaveals is all programs are, at their very centers, [reductions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce). +What this effectively means is the above table can, as desired, be fully realized so that any mutable operation can also be simulated, written as a reductive operation. What this reaveals is all programs are, at their very centers, [reductions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce). That's the cornerstone of how Clojure models state change. And where Clojure actually has a robust set of persistent types, JavaScript doesn't. So Atomic uses reference types and pure protocols/functions to emulate persistent types. In practice, this proves performant enough to be of little concern.