Download PDF version / Source repo
Many thanks to Steve Tayon for creating it and Andy Fingerhut for ongoing maintenance.
clojure.repl/ | doc find-doc apropos dir source pst javadoc (foo.bar/ is namespace for later syms) |
Literals | Long: 7, hex 0xff, oct 017, base 2 2r1011, base 36 36rCRAZY BigInt: 7N Ratio: -22/7 Double: 2.78 -1.2e-5 BigDecimal: 4.2M |
Arithmetic | + - * / quot rem mod inc dec max min +' -' *' inc' dec' |
Compare | == < > <= >= compare |
Bitwise | bit-and bit-or bit-xor bit-not bit-flip bit-set bit-shift-right bit-shift-left bit-and-not bit-clear bit-test unsigned-bit-shift-right (see BigInteger for integers larger than Long) |
Cast | byte short int long float double bigdec bigint num rationalize biginteger |
Test | zero? pos? neg? even? odd? number? rational? integer? ratio? decimal? float? (1.9) double? int? nat-int? neg-int? pos-int? |
Random | rand rand-int |
BigDecimal | with-precision |
Unchecked | *unchecked-math* unchecked-add unchecked-dec unchecked-inc unchecked-multiply unchecked-negate unchecked-subtract |
Create | str format "a string" "escapes \b\f\n\t\r\" octal \377 hex \ucafe" See also section IO/to string |
Use | count get subs compare (clojure.string/) join escape split split-lines replace replace-first reverse (1.8) index-of last-index-of |
Regex | #"pattern" re-find re-seq re-matches re-pattern re-matcher re-groups (clojure.string/) replace replace-first re-quote-replacement Note: \ in |
Letters | (clojure.string/) capitalize lower-case upper-case |
Trim | (clojure.string/) trim trim-newline triml trimr |
Test | string? (clojure.string/) blank? (1.8) starts-with? ends-with? includes? |
Characters | char char? char-name-string char-escape-string literals: \a \newline (more at link) |
Keywords | keyword keyword? find-keyword literals: :kw :my.name.space/kw ::in-cur-namespace ::namespace-alias/kw |
Symbols | symbol symbol? gensym literals: my-sym my.ns/foo |
Misc | literals: true false nil |
Generic ops | count empty not-empty into conj (clojure.walk/) walk prewalk prewalk-demo prewalk-replace postwalk postwalk-demo postwalk-replace (1.9) bounded-count |
Content tests | distinct? empty? every? not-every? some not-any? |
Capabilities | sequential? associative? sorted? counted? reversible? |
Type tests | coll? list? vector? set? map? seq? record? (1.8) map-entry? |
Create | () list list* |
Examine | first nth peek .indexOf .lastIndexOf |
'Change' | cons conj rest pop |
Create | [] vector vec vector-of mapv filterv (clojure.core.rrb-vector/) vector vec vector-of |
Examine |
|
'Change' | assoc assoc-in pop subvec replace conj rseq update update-in |
Ops | reduce-kv |
Create unsorted | #{} set hash-set |
Create sorted | sorted-set sorted-set-by (clojure.data.avl/) sorted-set sorted-set-by (flatland.ordered.set/) ordered-set (clojure.data.int-map/) int-set dense-int-set |
Examine |
|
'Change' | conj disj |
Set ops | (clojure.set/) union difference intersection select See also section Relations |
Test | (clojure.set/) subset? superset? |
Sorted sets | rseq subseq rsubseq |
Create unsorted | {} hash-map array-map zipmap bean frequencies group-by (clojure.set/) index |
Create sorted | sorted-map sorted-map-by (clojure.data.avl/) sorted-map sorted-map-by (flatland.ordered.map/) ordered-map (clojure.data.priority-map/) priority-map (flatland.useful.map/) ordering-map (clojure.data.int-map/) int-map |
Examine |
|
'Change' | assoc assoc-in dissoc merge merge-with select-keys update update-in (clojure.set/) rename-keys map-invert GitHub: Medley |
Ops | reduce-kv |
Entry | key val |
Sorted maps | rseq subseq rsubseq |
Create | clojure.lang.PersistentQueue/EMPTY (no literal syntax or constructor fn) |
Examine | peek |
'Change' | conj pop |
Rel algebra | (clojure.set/) join select project union difference intersection index rename |
Create | transient persistent! |
Change | conj! pop! assoc! dissoc! disj! Note: always use return value for later changes, never original! |
Compare | = identical? not= not compare clojure.data/diff |
Test | true? false? instance? nil? some? |
From collection | seq vals keys rseq subseq rsubseq sequence |
From producer fn | lazy-seq repeatedly iterate |
From constant | repeat range |
From other | file-seq line-seq resultset-seq re-seq tree-seq xml-seq iterator-seq enumeration-seq |
From seq | keep keep-indexed |
Get shorter | distinct filter remove take-nth for dedupe random-sample |
Get longer | cons conj concat lazy-cat mapcat cycle interleave interpose |
Tail-items | rest nthrest next fnext nnext drop drop-while take-last for |
Head-items | take take-while butlast drop-last for |
'Change' | conj concat distinct flatten group-by partition partition-all partition-by split-at split-with filter remove replace shuffle |
Rearrange | reverse sort sort-by compare |
Process items | map pmap map-indexed mapcat for replace seque |
Extract item | first second last rest next ffirst nfirst fnext nnext nth nthnext rand-nth when-first max-key min-key |
Construct coll | zipmap into reduce reductions set vec into-array to-array-2d mapv filterv |
Pass to fn | apply |
Search | some filter |
Force evaluation | doseq dorun doall run! |
Check for forced | realized? |
Off the shelf | map mapcat filter remove take take-while take-nth drop drop-while replace partition-by partition-all keep keep-indexed map-indexed distinct interpose cat dedupe random-sample (1.9) halt-when |
Create your own | completing ensure-reduced unreduced See also section Concurrency/Volatiles |
Use | into sequence transduce eduction |
Early termination | reduced reduced? deref |
Operations | valid? conform unform explain explain-data explain-str explain-out form describe assert check-asserts check-asserts? |
Generator ops | gen exercise exercise-fn |
Defn. & registry | def fdef registry get-spec spec? spec with-gen |
Logical | and or |
Collection | coll-of map-of every every-kv keys merge |
Regex | cat alt * + ? & keys* |
Range | int-in inst-in double-in int-in-range? inst-in-range? |
Other | nilable multi-spec fspec conformer |
Custom explain | explain-printer *explain-out* |
Numbers | number? rational? integer? ratio? decimal? float? zero? (1.9) double? int? nat-int? neg-int? pos-int? |
Symbols, keywords | keyword? symbol? (1.9) ident? qualified-ident? qualified-keyword? qualified-symbol? simple-ident? simple-keyword? simple-symbol? |
Other scalars | string? true? false? nil? some? (1.9) boolean? bytes? inst? uri? uuid? |
Collections | list? map? set? vector? associative? coll? sequential? seq? empty? (1.9) indexed? seqable? |
Other | (1.9) any? |
to/from ... | spit slurp (to writer/from reader, Socket, string with file name, URI, etc.) |
to *out* | pr prn print printf println newline (clojure.pprint/) print-table |
to writer | (clojure.pprint/) pprint cl-format also: (binding [*out* writer] ...) |
to string | format with-out-str pr-str prn-str print-str println-str |
from *in* | read-line (clojure.edn/) read (clojure.tools.reader.edn/) read |
from reader | line-seq (clojure.edn/) read (clojure.tools.reader.edn/) read also: (binding [*in* reader] ...) java.io.Reader |
from string | with-in-str (clojure.edn/) read-string (clojure.tools.reader.edn/) read-string |
Open | with-open (clojure.java.io/) text: reader writer binary: input-stream output-stream |
Binary | (.write ostream byte-arr) (.read istream byte-arr) java.io.OutputStream java.io.InputStream GitHub: gloss byte-spec |
Misc | flush (.close s) file-seq *in* *out* *err* (clojure.java.io/) file copy delete-file resource as-file as-url as-relative-path GitHub: fs |
Data readers | *data-readers* default-data-readers *default-data-reader-fn* |
tap | (1.10) tap> add-tap remove-tap |
Create | fn defn defn- definline identity constantly memfn comp complement partial juxt memoize fnil every-pred some-fn |
Call | apply -> ->> trampoline as-> cond-> cond->> some-> some->> |
Test | fn? ifn? |
Define |
|
Extend |
|
Extend null |
|
Reify |
|
Test | satisfies? extends? |
Other | extend extend-protocol extenders |
Define |
|
Access |
|
Create | Pair. ->Pair map->Pair |
Test | record? |
Define |
|
Access |
|
Create | Pair. ->Pair |
With methods |
|
Define |
|
Method define |
|
Dispatch | get-method methods |
Remove | remove-method remove-all-methods |
Prefer | prefer-method prefers |
Relation | derive underive isa? parents ancestors descendants make-hierarchy |
Create | defmacro definline |
Debug | macroexpand-1 macroexpand (clojure.walk/) macroexpand-all |
Branch | and or when when-not when-let when-first if-not if-let cond condp case when-some if-some |
Loop | for doseq dotimes while |
Arrange | .. doto -> ->> as-> cond-> cond->> some-> some->> |
Scope | binding locking time with-in-str with-local-vars with-open with-out-str with-precision with-redefs with-redefs-fn |
Lazy | lazy-cat lazy-seq delay |
Doc. | assert comment doc |
, |
Comma reads as white space. Often used between map key/value pairs for readability. |
' |
quote: |
/ |
Namespace separator (see Primitives/Other section) |
\ |
Character literal (see Primitives/Other section) |
: |
Keyword (see Primitives/Other section) |
; |
Single line comment |
^ |
Metadata (see Metadata section) |
*foo* |
'earmuffs' - convention to indicate dynamic vars, compiler warns if not dynamic |
@ |
Deref: |
` |
Syntax-quote |
foo# |
'auto-gensym', consistently replaced with same auto-generated symbol everywhere inside same |
~ |
Unquote |
~@ |
Unquote-splicing |
-> |
'thread first' macro -> |
->> |
'thread last' macro ->> |
>!! <!! >! <! |
core.async channel macros >!! <!! >! <! |
( |
List literal (see Collections/Lists section) |
[ |
Vector literal (see Collections/Vectors section) |
{ |
Map literal (see Collections/Maps section) |
#' |
Var-quote: |
#" |
#"p" reads as regex pattern p (see Strings/Regex section) |
#{ |
Set literal (see Collections/Sets section) |
#( |
Anonymous function literal: |
% |
Anonymous function argument: |
#? |
Reader conditional: |
#?@ |
Splicing reader conditional: |
#foo |
tagged literal e.g. |
#: |
map namespace syntax e.g. |
## |
(1.9) symbolic values: |
$ |
|
foo? |
conventional ending for a predicate, e.g.: zero? vector? instance? (unenforced) |
foo! |
conventional ending for an unsafe operation, e.g.: set! swap! alter-meta! (unenforced) |
_ |
conventional name for an unused value (unenforced) |
#_ |
Ignore next form |
General |
|
Abbrevs |
|
Common |
|
Examples |
|
On Vars | meta with-meta vary-meta alter-meta! reset-meta! doc find-doc test |
Binding Forms / Destructuring | (examples) let fn defn defmacro loop for doseq if-let when-let if-some when-some |
Def variants | def defn defn- definline defmacro defmethod defmulti defonce defrecord |
Interned vars | declare intern binding find-var var |
Var objects | with-local-vars var-get var-set alter-var-root var? bound? thread-bound? |
Var validators | set-validator! get-validator |
Current | *ns* |
Create/Switch | (tutorial) ns in-ns create-ns |
Add | alias def import intern refer |
Find | all-ns find-ns |
Examine | ns-name ns-aliases ns-map ns-interns ns-publics ns-refers ns-imports |
From symbol | resolve ns-resolve namespace the-ns (1.10) requiring-resolve |
Remove | ns-unalias ns-unmap remove-ns |
Load libs | (tutorial) require use import refer |
List loaded | loaded-libs |
Load misc | load load-file load-reader load-string |
Atoms | atom swap! reset! compare-and-set! (1.9) swap-vals! reset-vals! |
Futures | future future-call future-done? future-cancel future-cancelled? future? |
Threads | bound-fn bound-fn* get-thread-bindings push-thread-bindings pop-thread-bindings thread-bound? |
Volatiles | volatile! vreset! vswap! volatile? |
Misc | locking pcalls pvalues pmap seque promise deliver |
Create | ref |
Examine | deref @ ( |
Transaction | sync dosync io! |
In transaction | ensure ref-set alter commute |
Validators | set-validator! get-validator |
History | ref-history-count ref-min-history ref-max-history |
Create | agent |
Examine | agent-error |
Change state | send send-off restart-agent send-via set-agent-send-executor! set-agent-send-off-executor! |
Block waiting | await await-for |
Ref validators | set-validator! get-validator |
Watchers | add-watch remove-watch |
Thread handling | shutdown-agents |
Error | error-handler set-error-handler! error-mode set-error-mode! |
Misc | *agent* release-pending-sends |
General | .. doto Classname/ Classname. new bean comparator enumeration-seq import iterator-seq memfn set! class class? bases supers type gen-class gen-interface definterface |
Cast | boolean byte short char int long float double bigdec bigint num cast biginteger |
Exceptions | throw try catch finally pst ex-info ex-data Throwable->map (1.9) StackTraceElement->vec (1.10) ex-cause ex-message (clojure.main/) ex-triage ex-str err->msg report-error |
Create | proxy get-proxy-class construct-proxy init-proxy |
Misc | proxy-mappings proxy-super update-proxy |
Create | zipper seq-zip vector-zip xml-zip |
Get loc | up down left right leftmost rightmost |
Get seq | lefts rights path children |
'Change' | make-node replace edit insert-child insert-left insert-right append-child remove |
Move | next prev |
Misc | root node branch? end? |
XML | clojure.xml/parse xml-seq |
REPL | *1 *2 *3 *e *print-dup* *print-length* *print-level* *print-meta* *print-readably* |
Code | *compile-files* *compile-path* *file* *warn-on-reflection* compile loaded-libs test |
Misc | eval force hash name *clojure-version* clojure-version *command-line-args* |
Browser / Shell | (clojure.java.browse/) browse-url (clojure.java.shell/) sh with-sh-dir with-sh-env |