# Subject Index - English ## A - **Agents** - [11.3](en/01-fundamentals.md#113-agents) - **Aliasing namespaces** - [9.3](en/01-fundamentals.md#93-referring-and-importing) - **Allocation (memory)** - [8.2](en/02-advanced.md#82-transient-data-structures) - **Anonymous functions** - [5.2](en/01-fundamentals.md#52-anonymous-functions) - **Antiquated functions** - [17.3](en/01-fundamentals.md#173-naming-conventions) - **Apply** - [7.3.3](en/01-fundamentals.md#733-reduce) - **Arities** - [5.1.2](en/01-fundamentals.md#512-multiple-arities) - **Asynchronous programming** - [16](en/01-fundamentals.md#16-coreasync), [4](en/04-recipes.md#4-async-recipes) - **Atom** - [11.1](en/01-fundamentals.md#111-atoms) ## B - **Batch processing** - [8.5](en/02-advanced.md#85-batch-processing), [8.1](en/04-recipes.md#81-batch-processing) - **Behavior dispatch** - [13](en/01-fundamentals.md#13-multimethods) - **Bencharking** - [8.7](en/02-advanced.md#87-bencharking) - **Binding** - [11.4](en/01-fundamentals.md#114-vars) - **Booleans** - [4.4](en/01-fundamentals.md#44-booleans) ## C - **Caching** - [1.5](en/01-fundamentals.md#15-memoization), [8.6](en/02-advanced.md#86-preload-and-cache), [8.2](en/04-recipes.md#82-caching-with-ttl) - **Case** - [6.1.5](en/01-fundamentals.md#615-case) - **Channels** - [16.1](en/01-fundamentals.md#161-channels), [5](en/05-clojure-nim.md#concurrency) - **Clojure/Nim** - [5](en/05-clojure-nim.md) — Native compilation, AI integration, JSON REPL - **Compilation (native)** - [5](en/05-clojure-nim.md#what-is-clojure-nim) - **Cross-compilation** - [5](en/05-clojure-nim.md#cross-compilation-targets) — JS, WASM, shared libraries - **Characters** - [4.3](en/01-fundamentals.md#43-characters) - **Chunked sequences** - [2.2](en/02-advanced.md#22-chunked-sequences) - **Circuit breaker** - [3.4](en/04-recipes.md#34-circuit-breaker) - **Closures** - [5.4](en/01-fundamentals.md#54-closures) - **Coll** - [5.3](en/02-advanced.md#53-extending-collections) - **Comment** - [3.5](en/01-fundamentals.md#35-comments) - **Commitment** - [3.3](en/04-recipes.md#33-cooldown-mechanism) - **Compilation** - [6.1](en/03-tooling.md#61-building-uberjars) - **Composing functions** - [5.3](en/01-fundamentals.md#53-higher-order-functions) - **concat** - [4.7](en/01-fundamentals.md#47-lists) - **Concurrency** - [11](en/01-fundamentals.md#11-concurrency) - **cond** - [6.1.3](en/01-fundamentals.md#613-cond) - **condp** - [6.1.4](en/01-fundamentals.md#614-condp) - **Configuration** - [1.3](en/01-fundamentals.md#13-keyword-arguments) - **Cons** - [4.7](en/01-fundamentals.md#47-lists) - **Contracts** - [5.3](en/04-recipes.md#53-contract-testing) - **Core.async** - [16](en/01-fundamentals.md#16-coreasync) - **Currying** - [5.3](en/01-fundamentals.md#53-higher-order-functions) ## D - **Data structures** - [4](en/01-fundamentals.md#4-data-structures) - **dead** - [11.7](en/01-fundamentals.md#117-stm-guidelines) - **deb** - [8.5](en/03-tooling.md#85-breakpoints) - **Debugging** - [8](en/03-tooling.md#8-debugging-techniques) - **def** - [3.3.1](en/01-fundamentals.md#331-def) - **defmacro** - [10.1](en/01-fundamentals.md#101-what-are-macros) - **defmethod** - [13.1](en/01-fundamentals.md#131-defining-multimethods) - **defmulti** - [13.1](en/01-fundamentals.md#131-defining-multimethods) - **defn** - [5.1.1](en/01-fundamentals.md#511-basic-syntax) - **defprotocol** - [12.1](en/01-fundamentals.md#121-protocols) - **defrecord** - [12.2](en/01-fundamentals.md#122-records) - **delay** - [11.6](en/01-fundamentals.md#116-promises-and-delivered) - **Dependency management** - [2](en/03-tooling.md#2-depsedn-and-cli-tools) - **Destructuring** - [8](en/01-fundamentals.md#8-destructuring) - **disj** - [4.10](en/01-fundamentals.md#410-sets) - **dissoc** - [4.9](en/01-fundamentals.md#49-maps) - **Docker** - [6.3](en/03-tooling.md#63-docker-integration) - **doseq** - [6.2.4](en/01-fundamentals.md#624-doseq-side-effects) - **dosync** - [11.2](en/01-fundamentals.md#112-refs) - **dotimes** - [6.2.3](en/01-fundamentals.md#623-for-list-comprehension) - **drop** - [7.3.6](en/01-fundamentals.md#736-take--drop) - **drop-while** - [7.3.6](en/01-fundamentals.md#736-take--drop) ## E - **eastwood** - [5.1](en/03-tooling.md#51-eastwood-linter) - **Either pattern** - [1.2](en/04-recipes.md#12-eitherresult-pattern) - **emit** - [6.1](en/03-tooling.md#61-building-uberjars) - **empty** - [4.12](en/01-fundamentals.md#412-collections-library) - **Enumerations** - [4.5](en/01-fundamentals.md#45-keywords) - **Error handling** - [6.3](en/01-fundamentals.md#63-exception-handling), [6.4](en/04-recipes.md#64-error-handling-middleware) - **Evaluation rules** - [3.4](en/01-fundamentals.md#34-evaluation-rules) - **Event sourcing** - [3.2](en/04-recipes.md#32-event-sourcing) - **Exception handling** - [6.3](en/01-fundamentals.md#63-exception-handling) - **expand** - [10.5](en/01-fundamentals.md#105-macro-expansion) - **Extending types** - [12.3](en/01-fundamentals.md#123-extending-existing-types) ## F - **Fibonacci** - [7.2](en/01-fundamentals.md#72-lazy-sequences) - **filter** - [7.3.2](en/01-fundamentals.md#732-filter--remove) - **find-doc** - [15.1](en/01-fundamentals.md#151-repl-commands) - **First** - [4.7](en/01-fundamentals.md#47-lists) - **Flatten** - [7.3.7](en/01-fundamentals.md#737-interpose--interleave) - **flip** - [11.2](en/01-fundamentals.md#112-refs) - **Float** - [4.1.2](en/01-fundamentals.md#412-floating-point) - **fold** - [7.3.3](en/01-fundamentals.md#733-reduce), [6.2](en/02-advanced.md#62-using-reducers) - **for** - [6.2.3](en/01-fundamentals.md#623-for-list-comprehension) - **force** - [11.6](en/01-fundamentals.md#116-promises-and-delivered) - **Formatting** - [3.6](en/01-fundamentals.md#36-whitespace-and-formatting) - **Function composition** - [5.3](en/01-fundamentals.md#53-higher-order-functions) - **Functional programming** - [1.2.2](en/01-fundamentals.md#122-functional-programming) - **Functions** - [5](en/01-fundamentals.md#5-functions) - **Futures** - [11.5](en/01-fundamentals.md#115-futures) ## G - **gen** - [4.5](en/02-advanced.md#45-generative-testing) - **Generative testing** - [14.4](en/01-fundamentals.md#144-generative-testing) - **get** - [4.8](en/01-fundamentals.md#48-vectors) - **get-in** - [4.9](en/01-fundamentals.md#49-maps) - **Glossary** - [Appendix B](en/01-fundamentals.md#appendix-b-glossary) - **group-by** - [7.3.7](en/01-fundamentals.md#737-interpose--interleave) ## H - **hash-map** - [4.9](en/01-fundamentals.md#49-maps) - **hash-set** - [4.10](en/01-fundamentals.md#410-sets) - **Hierarchies** - [13.3](en/01-fundamentals.md#133-hierarchies) - **Higher-order functions** - [5.3](en/01-fundamentals.md#53-higher-order-functions) - **hot** - [4.2](en/03-tooling.md#42-reloading-code) ## I - **Identities** - [11](en/01-fundamentals.md#11-concurrency) - **if** - [3.3.3](en/01-fundamentals.md#333-if) - **if-let** - [6.1.2](en/01-fundamentals.md#612-when--when-not) - **if-not** - [6.1.1](en/01-fundamentals.md#611-if--if-not) - **Immutability** - [1.2.1](en/01-fundamentals.md#121-immutability-by-default), [4](en/01-fundamentals.md#4-data-structures) - **import** - [9.3](en/01-fundamentals.md#93-referring-and-importing) - **in-ns** - [9.1](en/01-fundamentals.md#91-creating-and-switching-namespaces) - **inc** - [4.2](en/01-fundamentals.md#42-strings) - **indexed** - [7.3.7](en/01-fundamentals.md#737-interpose--interleave) - **Infinite sequences** - [2.5](en/02-advanced.md#25-infinite-sequences) - **Injection** - [7.3.8](en/01-fundamentals.md#738-interpose--interleave) - **inline** - [8.2](en/02-advanced.md#82-transient-data-structures) - **Installation** - [2.1](en/01-fundamentals.md#21-installation) - **Integration testing** - [3.3](en/03-tooling.md#33-test-namespaces) - **Interleave** - [7.3.8](en/01-fundamentals.md#738-interpose--interleave) - **interpose** - [7.3.8](en/01-fundamentals.md#738-interpose--interleave) - **into** - [7.3.7](en/01-fundamentals.md#737-interpose--interleave) - **iterate** - [7.2](en/01-fundamentals.md#72-lazy-sequences) ## J - **juxt** - [5.3](en/01-fundamentals.md#53-higher-order-functions) ## K - **Keywords** - [4.5](en/01-fundamentals.md#45-keywords) - **keys** - [8.2](en/01-fundamentals.md#82-map-destructuring) ## L - **Lazy sequences** - [7.2](en/01-fundamentals.md#72-lazy-sequences), [2](en/02-advanced.md#2-lazy-sequences-deep-dive) - **let** - [3.3.2](en/01-fundamentals.md#332-let) - **letfn** - [5.1.3](en/01-fundamentals.md#513-variable-arguments) - **Libraries** - [7](en/03-tooling.md#7-library-ecosystem) - **Linters** - [5](en/03-tooling.md#5-code-quality-tools) - **Lisp heritage** - [1.2.3](en/01-fundamentals.md#123-lisp-heritage) - **Lists** - [4.7](en/01-fundamentals.md#47-lists) - **load-file** - [15.2](en/01-fundamentals.md#152-repl-workflow) - **local** - [3.2](en/03-tooling.md#32-fixtures-for-setupteardown) - **Logging** - [8.6](en/03-tooling.md#86-logging) - **loop** - [6.2.2](en/01-fundamentals.md#622-looprecur) ## M - **macroexpand** - [10.5](en/01-fundamentals.md#105-macro-expansion) - **Macros** - [10](en/01-fundamentals.md#10-macros) - **Make** - [6.1](en/03-tooling.md#61-building-uberjars) - **map** - [7.3.1](en/01-fundamentals.md#731-map) - **map-indexed** - [7.3.1](en/01-fundamentals.md#731-map) - **mapcat** - [7.3.5](en/01-fundamentals.md#735-mapcat) - **mapv** - [7.3.1](en/01-fundamentals.md#731-map) - **Maps** - [4.9](en/01-fundamentals.md#49-maps) - **match-route** - [6.3](en/04-recipes.md#63-route-definitions) - **max-key** - [5.3](en/01-fundamentals.md#53-higher-order-functions) - **Maybe pattern** - [1.1](en/04-recipes.md#11-maybeoption-pattern) - **Memoization** - [1.5](en/01-fundamentals.md#15-memoization), [8.6](en/02-advanced.md#86-preload-and-cache) - **merge** - [4.9](en/01-fundamentals.md#49-maps) - **merge-with** - [4.9](en/01-fundamentals.md#49-maps) - **Metadata** - [1.7](en/02-advanced.md#17-function-metadata), [3.3.1](en/01-fundamentals.md#331-def) - **min-key** - [5.3](en/01-fundamentals.md#53-higher-order-functions) - **mod** - [4.1.1](en/01-fundamentals.md#411-integer-types) - **multimethods** - [13](en/01-fundamentals.md#13-multimethods) - **Mutability** - [11](en/01-fundamentals.md#11-concurrency) ## N - **namespace** - [9.5](en/01-fundamentals.md#95-working-with-namespaces) - **Namespaces** - [9](en/01-fundamentals.md#9-namespaces) - **neg** - [4.2](en/01-fundamentals.md#42-strings) - **nil** - [4.4](en/01-fundamentals.md#44-booleans) - **not** - [4.4](en/01-fundamentals.md#44-booleans) - **not-empty** - [4.12](en/01-fundamentals.md#412-collections-library) - **ns** - [9.1](en/01-fundamentals.md#91-creating-and-switching-namespaces) - **ns-publics** - [9.5](en/01-fundamentals.md#95-working-with-namespaces) - **ns-resolve** - [9.5](en/01-fundamentals.md#95-working-with-namespaces) - **nth** - [4.7](en/01-fundamentals.md#47-lists) - **Numbers** - [4.1](en/01-fundamentals.md#41-numbers) ## O - **or** - [3.5](en/01-fundamentals.md#35-special-forms) ## P - **parallelize** - [11.7](en/01-fundamentals.md#117-stm-guidelines) - **Parallelism** - [7](en/02-advanced.md#7-parallelism) - **Parameter** - [5.1.3](en/01-fundamentals.md#513-variable-arguments) - **parse** - [5.2](en/04-recipes.md#52-schema-validation) - **partial** - [5.3](en/01-fundamentals.md#53-higher-order-functions) - **partition** - [7.3.7](en/01-fundamentals.md#737-interpose--interleave) - **partition-all** - [7.3.7](en/01-fundamentals.md#737-interpose--interleave) - **partition-by** - [7.3.7](en/01-fundamentals.md#737-interpose--interleave) - **peek** - [4.7](en/01-fundamentals.md#47-lists) - **persist** - [7.2](en/01-fundamentals.md#72-lazy-sequences) - **Persistent data structures** - [8.1](en/02-advanced.md#81-persistent-data-structures) - **pheric** - [2.2](en/02-advanced.md#22-chunked-sequences) - **pmap** - [7.1](en/02-advanced.md#71-pmap) - **pop** - [4.8](en/01-fundamentals.md#48-vectors) - **pos** - [4.2](en/01-fundamentals.md#42-strings) - **postwalk** - [7.5](en/01-fundamentals.md#75-walking-collections) - **preconditions** - [5.5](en/01-fundamentals.md#55-pre--and-post-conditions) - **prewalk** - [7.5](en/01-fundamentals.md#75-walking-collections) - **print** - [8.1](en/03-tooling.md#81-print-debugging) - **println** - [4.2](en/01-fundamentals.md#42-strings) - **Process** - [3.1](en/04-recipes.md#31-service-pattern-with-atoms) - **profile** - [8.3](en/03-tooling.md#83-repl-debugging) - **project** - [1](en/03-tooling.md#1-project-structure) - **promise** - [11.6](en/01-fundamentals.md#116-promises-and-delivered) - **Promises** - [11.6](en/01-fundamentals.md#116-promises-and-delivered) - **Protocols** - [12](en/01-fundamentals.md#12-protocols-and-records) - **put** - [16.1](en/01-fundamentals.md#161-channels) ## Q - **quick-check** - [3.1](en/03-tooling.md#31-testcheck-for-generative-testing), [14.4](en/01-fundamentals.md#144-generative-testing) ## R - **rand** - [7.4](en/01-fundamentals.md#74-creating-sequences) - **Random** - [7.4](en/01-fundamentals.md#74-creating-sequences) - **range** - [7.4](en/01-fundamentals.md#74-creating-sequences) - **Ratio** - [4.1.3](en/01-fundamentals.md#413-ratios) - **Readers** - [2.1](en/03-tooling.md#21-depsedn-reference) - **realized** - [2.1](en/02-advanced.md#21-realizing-sequences) - **reduced** - [3.4](en/02-advanced.md#34-early-termination) - **Reducers** - [6](en/02-advanced.md#6-reducibles) - **reduce** - [7.3.3](en/01-fundamentals.md#733-reduce) - **reduce-kv** - [7.3.3](en/01-fundamentals.md#733-reduce) - **reductions** - [7.3.3](en/01-fundamentals.md#733-reduce) - **Ref** - [11.2](en/01-fundamentals.md#112-refs) - **ref-set** - [11.2](en/01-fundamentals.md#112-refs) - **refresh** - [4.1](en/03-tooling.md#41-repl-driven-development) - **release** - [11.3](en/01-fundamentals.md#113-agents) - **remove** - [7.3.2](en/01-fundamentals.md#732-filter--remove) - **remove-method** - [13.4](en/01-fundamentals.md#134-remove-method) - **repeat** - [7.4](en/01-fundamentals.md#74-creating-sequences) - **repeatedly** - [7.4](en/01-fundamentals.md#74-creating-sequences) - **require** - [9.3](en/01-fundamentals.md#93-referring-and-importing) - **require** - [4.1](en/03-tooling.md#41-repl-driven-development) - **reset!** - [11.1](en/01-fundamentals.md#111-atoms) - **rest** - [4.7](en/01-fundamentals.md#47-lists) - **REPL** - [2.2](en/01-fundamentals.md#22-your-first-clojure-project), [15](en/01-fundamentals.md#15-the-repl) - **rest** - [7.3.6](en/01-fundamentals.md#736-take--drop) - **reverse** - [7.3.9](en/01-fundamentals.md#739-distinct--sort--shuffle) ## S - **s/conform** - [8.2](en/03-tooling.md#82-stack-traces) - **s/gen** - [4.5](en/02-advanced.md#45-generative-testing) - **sample** - [4.5](en/02-advanced.md#45-generative-testing) - **Schema validation** - [5.2](en/04-recipes.md#52-schema-validation) - **select-keys** - [4.9](en/01-fundamentals.md#49-maps) - **send** - [11.3](en/01-fundamentals.md#113-agents) - **send-off** - [11.3](en/01-fundamentals.md#113-agents) - **seq** - [7.1](en/01-fundamentals.md#71-the-sequence-abstraction) - **Sequences** - [7](en/01-fundamentals.md#7-sequences-and-lazy-evaluation) - **seqable** - [2.4](en/02-advanced.md#24-seqable-objects) - **Service pattern** - [3.1](en/04-recipes.md#31-service-pattern-with-atoms) - **set** - [4.10](en/01-fundamentals.md#410-sets) - **set!** - [11.4](en/01-fundamentals.md#114-vars) - **Shallow** - [8.1](en/02-advanced.md#81-persistent-data-structures) - **shuffle** - [7.3.9](en/01-fundamentals.md#739-distinct--sort--shuffle) - **shutdown** - [11.3](en/01-fundamentals.md#113-agents) - **some** - [7.3.2](en/01-fundamentals.md#732-filter--remove) - **some->** - [17.6](en/01-fundamentals.md#176-threading-macros) - **some-fn** - [5.3](en/01-fundamentals.md#53-higher-order-functions) - **sort** - [7.3.9](en/01-fundamentals.md#739-distinct--sort--shuffle) - **sort-by** - [7.3.9](en/01-fundamentals.md#739-distinct--sort--shuffle) - **Source tracking** - [4.3](en/03-tooling.md#43-source-tracking) - **spec** - [4](en/02-advanced.md#4-specs-and-validation) - **split-at** - [7.3.6](en/01-fundamentals.md#736-take--drop) - **split-with** - [7.3.6](en/01-fundamentals.md#736-take--drop) - **Stack traces** - [8.2](en/03-tooling.md#82-stack-traces) - **State machine** - [1.3](en/04-recipes.md#13-state-machine-pattern) - **STM** - [11.2](en/01-fundamentals.md#112-refs) - **stop** - [3.1](en/04-recipes.md#31-service-pattern-with-atoms) - **str** - [4.2](en/01-fundamentals.md#42-strings) - **Strings** - [4.2](en/01-fundamentals.md#42-strings) - **Structural sharing** - [8.1](en/02-advanced.md#81-persistent-data-structures) - **subs** - [4.2](en/01-fundamentals.md#42-strings) - **subvec** - [4.8](en/01-fundamentals.md#48-vectors) - **superiors** - [13.3](en/01-fundamentals.md#133-hierarchies) - **swap!** - [11.1](en/01-fundamentals.md#111-atoms) - **Symbols** - [4.6](en/01-fundamentals.md#46-symbols) ## T - **TAP** - [8.1](en/03-tooling.md#81-print-debugging) - **take** - [7.3.6](en/01-fundamentals.md#736-take--drop) - **take-nth** - [7.3.6](en/01-fundamentals.md#736-take--drop) - **take-while** - [7.3.6](en/01-fundamentals.md#736-take--drop) - **test** - [3.3](en/03-tooling.md#33-test-namespaces), [14.1](en/01-fundamentals.md#141-clojuretest) - **test.check** - [14.4](en/01-fundamentals.md#144-generative-testing) - **Testing** - [14](en/01-fundamentals.md#14-testing) - **test** - [4.5](en/02-advanced.md#45-generative-testing) - **thread-bound** - [11.4](en/01-fundamentals.md#114-vars) - **Thread-first** - [17.6](en/01-fundamentals.md#176-threading-macros) - **Thread-last** - [17.6](en/01-fundamentals.md#176-threading-macros) - **throw** - [6.3](en/01-fundamentals.md#63-exception-handling) - **Timeout** - [4.3](en/04-recipes.md#43-timeout-patterns) - **to** - [4.6](en/01-fundamentals.md#46-symbols) - **trace** - [8.5](en/03-tooling.md#85-breakpoints) - **track** - [4.3](en/03-tooling.md#43-source-tracking) - **Transducers** - [3](en/02-advanced.md#3-transducers) - **transient** - [8.2](en/02-advanced.md#82-transient-data-structures) - **Transitive** - [13.3](en/01-fundamentals.md#133-hierarchies) - **Tree operations** - [2.4](en/04-recipes.md#24-tree-operations) - **tree-seq** - [7.5](en/01-fundamentals.md#75-walking-collections) - **try** - [6.3](en/01-fundamentals.md#63-exception-handling) - **Type checking** - [5.4](en/03-tooling.md#54-typed-clojure-optional-type-checking) - **type** - [12.2](en/01-fundamentals.md#122-records) ## U - **uberjar** - [6.1](en/03-tooling.md#61-building-uberjars) - **Unquote** - [10.3](en/01-fundamentals.md#103-unquoting) - **update** - [4.9](en/01-fundamentals.md#49-maps) - **update-in** - [4.9](en/01-fundamentals.md#49-maps) - **use** - [9.3](en/01-fundamentals.md#93-referring-and-importing) - **use-fixtures** - [3.2](en/03-tooling.md#32-fixtures-for-setupteardown) ## V - **val** - [7.1](en/01-fundamentals.md#71-the-sequence-abstraction) - **validate** - [5.1](en/04-recipes.md#51-multi-stage-validation) - **Validation** - [5](en/04-recipes.md#5-validation-recipes) - **vals** - [4.9](en/01-fundamentals.md#49-maps) - **var** - [3.3.1](en/01-fundamentals.md#331-def) - **var-get** - [11.4](en/01-fundamentals.md#114-vars) - **Vars** - [11.4](en/01-fundamentals.md#114-vars) - **vec** - [4.8](en/01-fundamentals.md#48-vectors) - **Vector** - [4.8](en/01-fundamentals.md#48-vectors) - **vector-of** - [4.8](en/01-fundamentals.md#48-vectors) - **volatile** - [11.1](en/01-fundamentals.md#111-atoms) ## W - **when** - [6.1.2](en/01-fundamentals.md#612-when--when-not) - **when-bind** - [10.6.2](en/01-fundamentals.md#1062-conditional-compilation) - **when-first** - [6.1.2](en/01-fundamentals.md#612-when--when-not) - **when-let** - [6.1.2](en/01-fundamentals.md#612-when--when-not) - **when-not** - [6.1.2](en/01-fundamentals.md#612-when--when-not) - **while** - [6.2](en/01-fundamentals.md#62-iteration) - **Whitespace** - [3.6](en/01-fundamentals.md#36-whitespace-and-formatting) - **Windowing** - [4.4](en/04-recipes.md#44-windowing) ## Z - **zero** - [4.2](en/01-fundamentals.md#42-strings) - **zipmap** - [4.9](en/01-fundamentals.md#49-maps)