# ClojureDocs(beta)

## Quick Ref for Clojure Core

### Simple Values

#### Numbers

Simple Values
##### Arithmetic
Simple Values > Numbers
•  + Returns the sum of nums. (+) returns 0. 1 ex.
•  - If no ys are supplied, returns the negation of x, else subtracts th 1 ex.
•  * Returns the product of nums. (*) returns 1. 1 ex.
•  / If no denominators are supplied, returns 1/numerator, else returns 1 ex.
•  quot quot[ient] of dividing numerator by denominator. 2 ex.
•  rem remainder of dividing numerator by denominator. 2 ex.
•  mod Modulus of num and div. Truncates toward negative infinity. 1 ex.
•  inc Returns a number one greater than num. 1 ex.
•  dec Returns a number one less than num. 1 ex.
•  max Returns the greatest of the nums. 1 ex.
•  min Returns the least of the nums. 1 ex.
•  with-precision Sets the precision and rounding mode to be used for BigDecimal operat 1 ex.
##### Compare
Simple Values > Numbers
•  = Equality. Returns true if x equals y, false if not. Same as Java x. 1 ex.
•  == Returns non-nil if nums all have the same value, otherwise false 1 ex.
•  not= Same as (not (= obj1 obj2)) 1 ex.
•  < Returns non-nil if nums are in monotonically increasing order, othe 1 ex.
•  > Returns non-nil if nums are in monotonically decreasing order, othe 1 ex.
•  <= Returns non-nil if nums are in monotonically non-decreasing order, 1 ex.
•  >= Returns non-nil if nums are in monotonically non-increasing order, 1 ex.
##### Bitwise Operations
Simple Values > Numbers
•  bit-and Bitwise and 1 ex.
•  bit-or Bitwise or 1 ex.
•  bit-xor Bitwise exclusive or 1 ex.
•  bit-flip Flip bit at index n 1 ex.
•  bit-not Bitwise complement 1 ex.
•  bit-clear Clear bit at index n 1 ex.
•  bit-set Set bit at index n 1 ex.
•  bit-shift-left Bitwise shift left 1 ex.
•  bit-shift-right Bitwise shift right 2 ex.
•  bit-test Test bit at index n 1 ex.
##### Cast
Simple Values > Numbers
•  byte Coerce to byte 1 ex.
•  short Coerce to short 1 ex.
•  int Coerce to int 1 ex.
•  long Coerce to long 2 ex.
•  float Coerce to float 1 ex.
•  double Coerce to double 1 ex.
•  bigint Coerce to BigInteger 1 ex.
•  bigdec Coerce to BigDecimal 1 ex.
•  num Coerce to Number 1 ex.
•  rationalize returns the rational value of num 1 ex.
##### Test
Simple Values > Numbers
•  nil? Returns true if x is nil, false otherwise. 1 ex.
•  identical? Tests if 2 arguments are the same object 1 ex.
•  zero? Returns true if num is zero, else false 1 ex.
•  pos? Returns true if num is greater than zero, else false 1 ex.
•  neg? Returns true if num is less than zero, else false 1 ex.
•  even? Returns true if n is even, throws an exception if n is not an integer 1 ex.
•  odd? Returns true if n is odd, throws an exception if n is not an integer 1 ex.

#### Symbols / Keywords

Simple Values
##### Create
Simple Values > Symbols / Keywords
•  keyword Returns a Keyword with the given namespace and name. Do not use : 1 ex.
•  symbol Returns a Symbol with the given namespace and name. 1 ex.
##### Use
Simple Values > Symbols / Keywords
•  name Returns the name String of a string, symbol or keyword. 1 ex.
•  intern Finds or creates a var named by the symbol name in the namespace ns 1 ex.
•  namespace Returns the namespace String of a symbol or keyword, or nil if not pr 1 ex.
##### Test
Simple Values > Symbols / Keywords
•  keyword? Return true if x is a Keyword 1 ex.
•  symbol? Return true if x is a Symbol 1 ex.

#### Strings / Characters

Simple Values
##### Create
Simple Values > Strings / Characters
•  str With no args, returns the empty string. With one arg x, returns x.t 2 ex.
•  print-str print to a string, returning it 1 ex.
•  println-str println to a string, returning it 1 ex.
•  pr-str pr to a string, returning it 1 ex.
•  prn-str prn to a string, returning it 1 ex.
•  with-out-str Evaluates exprs in a context in which *out* is bound to a fresh Str 1 ex.
##### Use
Simple Values > Strings / Characters
•  count Returns the number of items in the collection. (count nil) returns 1 ex.
•  get Returns the value mapped to key, not-found or nil if key not present. 1 ex.
•  subs Returns the substring of s beginning at start inclusive, and ending 1 ex.
•  format Formats a string using java.lang.String.format, see java.util.Formatt 1 ex.
##### Cast / Test
Simple Values > Strings / Characters
•  char Coerce to char 1 ex.
•  char? Return true if x is a Character 1 ex.
•  string? Return true if x is a String 1 ex.

#### Regular Expressions

Simple Values
##### Create
Simple Values > Regular Expressions
•  re-pattern Returns an instance of java.util.regex.Pattern, for use, e.g. in re 1 ex.
•  re-matcher Returns an instance of java.util.regex.Matcher, for use, e.g. in re 1 ex.
##### Use
Simple Values > Regular Expressions
•  re-find Returns the next regex match, if any, of string to pattern, using j 2 ex.
•  re-matches Returns the match, if any, of string to pattern, using java.util.re 1 ex.
•  re-seq Returns a lazy sequence of successive matches of pattern in string, 2 ex.
•  re-groups Returns the groups from the most recent match/find. If there are no 1 ex.

### Operations

#### Flow Control

Operations
##### Normal
Operations > Flow Control
•  if Please see http://clojure.org/special_forms#if 1 ex.
•  if-not Evaluates test. If logical false, evaluates and returns then expr, 2 ex.
•  if-let bindings => binding-form test If test is true, evaluates then with 3 ex.
•  when Evaluates test. If logical true, evaluates body in an implicit do. 2 ex.
•  when-not Evaluates test. If logical false, evaluates body in an implicit do. 1 ex.
•  when-let bindings => binding-form test When test is true, evaluates body wi 1 ex.
•  when-first bindings => x xs Same as (when (seq xs) (let [x (first xs)] body)) 1 ex.
•  cond Takes a set of test/expr pairs. It evaluates each test one at a tim 2 ex.
•  condp Takes a binary predicate, an expression, and a set of clauses. Each 4 ex.
•  case Takes an expression, and a set of clauses. Each clause can take th 1 ex.
•  do Please see http://clojure.org/special_forms#do 1 ex.
•  eval Evaluates the form data structure (not text!) and returns the result. 2 ex.
•  loop Evaluates the exprs in a lexical context in which the symbols in th 2 ex.
•  recur Please see http://clojure.org/special_forms#recur 2 ex.
•  trampoline trampoline can be used to convert algorithms requiring mutual recur 1 ex.
•  while Repeatedly executes body while test expression is true. Presumes so 1 ex.
##### Exceptional
Operations > Flow Control
•  try Please see http://clojure.org/special_forms#try 1 ex.
•  catch Please see http://clojure.org/special_forms#try 1 ex.
•  finally Please see http://clojure.org/special_forms#finally 1 ex.
•  throw Please see http://clojure.org/special_forms#throw 1 ex.
•  assert Evaluates expr and throws an exception if it does not evaluate to lo 1 ex.
##### Delay
Operations > Flow Control
•  delay Takes a body of expressions and yields a Delay object that will inv 1 ex.
•  delay? returns true if x is a Delay created with delay 1 ex.
•  deref Also reader macro: @ref/@agent/@var/@atom/@delay/@future. Within a tr 1 ex.
•  force If x is a Delay, returns the (possibly cached) value of its expressio 2 ex.
##### Function Based
Operations > Flow Control
•  repeatedly Takes a function of no args, presumably with side effects, and retu 2 ex.
•  iterate Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of 3 ex.
##### Sequence Based
Operations > Flow Control
•  dotimes bindings => name n Repeatedly executes body (presumably for side-e 1 ex.
•  doseq Repeatedly executes body (presumably for side-effects) with binding 5 ex.
•  for List comprehension. Takes a vector of one or more binding-form/col 6 ex.
##### Laziness
Operations > Flow Control
•  lazy-seq Takes a body of expressions that returns an ISeq or nil, and yields 1 ex.
•  lazy-cat Expands to code which yields a lazy sequence of the concatenation o 1 ex.
•  doall When lazy sequences are produced via functions that have side effec 1 ex.
•  dorun When lazy sequences are produced via functions that have side effec 1 ex.

#### Type Inspection

Operations
##### Clojure Types
Operations > Type Inspection
•  type Returns the :type metadata of x, or its Class if none 2 ex.
•  extends? Returns true if atype extends protocol 0 ex.
•  satisfies? Returns true if x satisfies the protocol 1 ex.
##### Java Types
Operations > Type Inspection
•  class Returns the Class of x 1 ex.
•  bases Returns the immediate superclass and direct interfaces of c, if any 1 ex.
•  supers Returns the immediate and indirect superclasses and interfaces of c, 1 ex.
•  class? Returns true if x is an instance of Class 1 ex.
•  instance? Evaluates x and tests if it is an instance of the class c. Return 2 ex.
•  isa? Returns true if (= child parent), or child is directly or indirectly 2 ex.
•  cast Throws a ClassCastException if x is not a c, else returns x. 1 ex.

#### Concurrency

Operations
##### General
Operations > Concurrency
•  deref Also reader macro: @ref/@agent/@var/@atom/@delay/@future. Within a tr 1 ex.
•  get-validator Gets the validator-fn for a var/ref/agent/atom. 0 ex.
•  set-validator! Sets the validator-fn for a var/ref/agent/atom. validator-fn must be 0 ex.
##### Atoms
Operations > Concurrency
•  atom Creates and returns an Atom with an initial value of x and zero or 1 ex.
•  swap! Atomically swaps the value of atom to be: (apply f current-value-of 2 ex.
•  reset! Sets the value of atom to newval without regard for the current val 1 ex.
•  compare-and-set! Atomically sets the value of atom to newval if and only if the curr 1 ex.
##### Refs
Operations > Concurrency
•  ref Creates and returns a Ref with an initial value of x and zero or mo 1 ex.
•  sync transaction-flags => TBD, pass nil for now Runs the exprs (in an i 0 ex.
•  dosync Runs the exprs (in an implicit do) in a transaction that encompasses 1 ex.
•  ref-set Must be called in a transaction. Sets the value of ref. Returns val 1 ex.
•  alter Must be called in a transaction. Sets the in-transaction-value of r 1 ex.
•  commute Must be called in a transaction. Sets the in-transaction-value of r 0 ex.
•  ensure Must be called in a transaction. Protects the ref from modification 0 ex.
•  io! If an io! block occurs in a transaction, throws an IllegalStateExce 0 ex.
•  ref-history-count Returns the history count of a ref 0 ex.
•  ref-max-history Gets the max-history of a ref, or sets it and returns the ref 0 ex.
•  ref-min-history Gets the min-history of a ref, or sets it and returns the ref 0 ex.
##### Agents
Operations > Concurrency
•  agent Creates and returns an agent with an initial value of state and zer 1 ex.
•  send Dispatch an action to an agent. Returns the agent immediately. Subs 1 ex.
•  send-off Dispatch a potentially blocking action to an agent. Returns the age 1 ex.
•  await Blocks the current thread (indefinitely!) until all actions dispatc 1 ex.
•  await-for Blocks the current thread until all actions dispatched thus far (fr 0 ex.
•  agent-error Returns the exception thrown during an asynchronous action of the a 0 ex.
•  restart-agent When an agent is failed, changes the agent state to new-state and t 0 ex.
•  shutdown-agents Initiates a shutdown of the thread pools that back the agent system 0 ex.
•  *agent* The agent currently running an action on this thread, else nil 1 ex.
•  error-handler Returns the error-handler of agent a, or nil if there is none. See 0 ex.
•  set-error-handler! Sets the error-handler of agent a to handler-fn. If an action bein 0 ex.
•  error-mode Returns the error-mode of agent a. See set-error-mode! 0 ex.
•  set-error-mode! Sets the error-mode of agent a to mode-keyword, which must be eithe 0 ex.
•  release-pending-sends Normally, actions sent directly or indirectly during another action 0 ex.
##### Futures
Operations > Concurrency
•  future Takes a body of expressions and yields a future object that will in 2 ex.
•  future-call Takes a function of no args and yields a future object that will in 0 ex.
•  future-done? Returns true if future f is done 0 ex.
•  future-cancel Cancels the future, if possible. 0 ex.
•  future-cancelled? Returns true if future f is cancelled 0 ex.
•  future? Returns true if x is a future 0 ex.
Operations > Concurrency
•  bound-fn Returns a function defined by the given fntail, which will install th 0 ex.
•  bound-fn* Returns a function, which will install the same bindings in effect as 0 ex.
•  get-thread-bindings Get a map with the Var/value pairs which is currently in effect for t 0 ex.
•  push-thread-bindings WARNING: This is a low-level function. Prefer high-level macros like 0 ex.
•  pop-thread-bindings Pop one set of bindings pushed with push-binding before. It is an err 0 ex.
•  thread-bound? Returns true if all of the vars provided as arguments have thread-loc 0 ex.
##### Misc
Operations > Concurrency
•  locking Executes exprs in an implicit do, while holding the monitor of x. W 1 ex.
•  pcalls Executes the no-arg fns in parallel, returning a lazy sequence of t 1 ex.
•  pvalues Returns a lazy sequence of the values of the exprs, which are evalu 1 ex.
•  pmap Like map, except f is applied in parallel. Semi-lazy in that the pa 2 ex.
•  seque Creates a queued seq on another (presumably lazy) seq s. The queued 1 ex.
•  promise Alpha - subject to change. Returns a promise object that can be rea 1 ex.
•  deliver Alpha - subject to change. Delivers the supplied value to the promi 1 ex.
•  add-watch Alpha - subject to change. Adds a watch function to an agent/atom/v 1 ex.
•  remove-watch Alpha - subject to change. Removes a watch (set by add-watch) from 0 ex.

### Functions

#### General

Functions
##### Create
Functions > General
•  fn (fn name? [params* ] exprs*) (fn name? ([params* ] exprs*)+) par 2 ex.
•  defn Same as (def name (fn [params* ] exprs*)) or (def name (fn ([para 3 ex.
•  defn- same as defn, yielding non-public def 1 ex.
•  definline Experimental - like defmacro, except defines a named function whose 0 ex.
•  identity Returns its argument. 6 ex.
•  constantly Returns a function that takes any number of arguments and returns x. 2 ex.
•  memfn Expands into code that creates a fn that expects to be passed an ob 1 ex.
•  comp Takes a set of functions and returns a fn that is the composition o 6 ex.
•  complement Takes a fn f and returns a fn that takes the same arguments as f, h 1 ex.
•  partial Takes a function f and fewer than the normal arguments to f, and re 2 ex.
•  juxt Alpha - name subject to change. Takes a set of functions and return 4 ex.
•  memoize Returns a memoized version of a referentially transparent function. T 1 ex.
##### Call
Functions > General
•  -> Threads the expr through the forms. Inserts x as the second item in 2 ex.
•  ->> Threads the expr through the forms. Inserts x as the last item in t 1 ex.
•  apply Applies fn f to the argument list formed by prepending args to argseq 6 ex.
##### Test
Functions > General
•  fn? Returns true if x implements Fn, i.e. is an object created via fn. 2 ex.
•  ifn? Returns true if x implements IFn. Note that many data structures (e 1 ex.

#### Multifunctions

Functions
##### Create
Functions > Multifunctions
•  defmulti Creates a new multimethod with the associated dispatch function. Th 3 ex.
•  defmethod Creates and installs a new method of multimethod associated with disp 3 ex.
##### Inspect and Modify
Functions > Multifunctions
•  get-method Given a multimethod and a dispatch value, returns the dispatch fn t 1 ex.
•  methods Given a multimethod, returns a map of dispatch values -> dispatch fns 1 ex.
•  prefer-method Causes the multimethod to prefer matches of dispatch-val-x over dispa 0 ex.
•  prefers Given a multimethod, returns a map of preferred value -> set of other 0 ex.
•  remove-method Removes the method of multimethod associated with dispatch-value. 1 ex.
•  remove-all-methods Removes all of the methods of multimethod. 1 ex.

#### Macros

Functions
##### Create
Functions > Macros
•  defmacro Like defn, but the resulting function name is declared as a macro a 1 ex.
•  macroexpand Repeatedly calls macroexpand-1 on form until it no longer represent 1 ex.
•  macroexpand-1 If form represents a macro form, returns its expansion, else return 1 ex.
•  gensym Returns a new symbol with a unique name. If a prefix string is supp 2 ex.

#### Java Interop

Functions
##### Use
Functions > Java Interop
•  doto Evaluates x then calls all of the methods and functions with the va 2 ex.
•  .. form => fieldName-symbol or (instanceMethodName-symbol args*) Expa 1 ex.
•  set! Please see http://clojure.org/special_forms#set 1 ex.
##### Arrays
Functions > Java Interop
•  make-array Creates and returns an array of instances of the specified class of 2 ex.
•  object-array Creates an array of objects 1 ex.
•  boolean-array Creates an array of booleans 1 ex.
•  byte-array Creates an array of bytes 1 ex.
•  char-array Creates an array of chars 1 ex.
•  short-array Creates an array of shorts 1 ex.
•  int-array Creates an array of ints 1 ex.
•  long-array Creates an array of longs 1 ex.
•  float-array Creates an array of floats 1 ex.
•  double-array Creates an array of doubles 1 ex.
•  aclone Returns a clone of the Java array. Works on arrays of known types. 1 ex.
•  to-array Returns an array of Objects containing the contents of coll, which 1 ex.
•  to-array-2d Returns a (potentially-ragged) 2-dimensional array of Objects conta 2 ex.
•  into-array Returns an array with components set to the values in aseq. The array 1 ex.
##### Use
Functions > Java Interop
•  aget Returns the value at the index/indices. Works on Java arrays of all 1 ex.
•  aset Sets the value at the index/indices. Works on Java arrays of refere 1 ex.
•  aset-boolean Sets the value at the index/indices. Works on arrays of boolean. Retu 1 ex.
•  aset-char Sets the value at the index/indices. Works on arrays of char. Returns 1 ex.
•  aset-byte Sets the value at the index/indices. Works on arrays of byte. Returns 1 ex.
•  aset-int Sets the value at the index/indices. Works on arrays of int. Returns 1 ex.
•  aset-long Sets the value at the index/indices. Works on arrays of long. Returns 1 ex.
•  aset-short Sets the value at the index/indices. Works on arrays of short. Return 1 ex.
•  aset-float Sets the value at the index/indices. Works on arrays of float. Return 1 ex.
•  aset-double Sets the value at the index/indices. Works on arrays of double. Retur 1 ex.
•  alength Returns the length of the Java array. Works on arrays of all types. 1 ex.
•  amap Maps an expression across an array a, using an index named idx, and 1 ex.
•  areduce Reduces an expression across an array a, using an index named idx, 1 ex.
##### Cast
Functions > Java Interop
•  booleans Casts to boolean[] 0 ex.
•  bytes Casts to bytes[] 0 ex.
•  chars Casts to chars[] 0 ex.
•  ints Casts to int[] 0 ex.
•  shorts Casts to shorts[] 0 ex.
•  longs Casts to long[] 0 ex.
•  floats Casts to float[] 0 ex.
•  doubles Casts to double[] 0 ex.

#### Proxies

Functions
##### Create
Functions > Proxies
•  proxy class-and-interfaces - a vector of class names args - a (possibly 1 ex.
•  get-proxy-class Takes an optional single class followed by zero or more interfaces. 0 ex.
•  construct-proxy Takes a proxy class and any arguments for its superclass ctor and c 0 ex.
•  init-proxy Takes a proxy instance and a map of strings (which must correspond 0 ex.
##### Misc
Functions > Proxies
•  proxy-mappings Takes a proxy instance and returns the proxy's fn map. 0 ex.
•  proxy-super Use to call a superclass method in the body of a proxy method. Not 0 ex.
•  update-proxy Takes a proxy instance and a map of strings (which must correspond 1 ex.

### Collections / Sequences

#### Collections

Collections / Sequences
##### Generic Operations
Collections / Sequences > Collections
•  count Returns the number of items in the collection. (count nil) returns 1 ex.
•  empty Returns an empty collection of the same category as coll, or nil 1 ex.
•  not-empty If coll is empty, returns nil, else coll 1 ex.
•  into Returns a new coll consisting of to-coll with all of the items of f 2 ex.
•  conj conj[oin]. Returns a new collection with the xs 'added'. (conj ni 1 ex.
##### Content Tests
Collections / Sequences > Collections
•  contains? Returns true if key is present in the given collection, otherwise r 2 ex.
•  distinct? Returns true if no two of the arguments are = 1 ex.
•  empty? Returns true if coll has no items - same as (not (seq coll)). Pleas 3 ex.
•  every? Returns true if (pred x) is logical true for every x in coll, else 2 ex.
•  not-every? Returns false if (pred x) is logical true for every x in coll, else 1 ex.
•  some Returns the first logical true value of (pred x) for any x in coll, 7 ex.
•  not-any? Returns false if (pred x) is logical true for any x in coll, else t 1 ex.
##### Capabilities
Collections / Sequences > Collections
•  sequential? Returns true if coll implements Sequential 1 ex.
•  associative? Returns true if coll implements Associative 0 ex.
•  sorted? Returns true if coll implements Sorted 1 ex.
•  counted? Returns true if coll implements count in constant time 1 ex.
•  reversible? Returns true if coll implements Reversible 0 ex.
##### Type Tests
Collections / Sequences > Collections
•  coll? Returns true if x implements IPersistentCollection 2 ex.
•  seq? Return true if x implements ISeq 1 ex.
•  vector? Return true if x implements IPersistentVector 1 ex.
•  list? Returns true if x implements IPersistentList 1 ex.
•  map? Return true if x implements IPersistentMap 1 ex.
•  set? Returns true if x implements IPersistentSet 1 ex.

#### Vectors

Collections / Sequences
##### Create
Collections / Sequences > Vectors
•  vec Creates a new vector containing the contents of coll. 1 ex.
•  vector Creates a new vector containing the args. 3 ex.
•  vector-of Creates a new vector of a single primitive type t, where t is one o 1 ex.
##### Use
Collections / Sequences > Vectors
•  conj conj[oin]. Returns a new collection with the xs 'added'. (conj ni 1 ex.
•  peek For a list or queue, same as first, for a vector, same as, but much 1 ex.
•  pop For a list or queue, returns a new list/queue without the first ite 1 ex.
•  get Returns the value mapped to key, not-found or nil if key not present. 1 ex.
•  assoc assoc[iate]. When applied to a map, returns a new map of the same 1 ex.
•  subvec Returns a persistent vector of the items in vector from start (incl 1 ex.
•  rseq Returns, in constant time, a seq of the items in rev (which can be 1 ex.

#### Lists

Collections / Sequences
##### Create
Collections / Sequences > Lists
•  list Creates a new list containing the items. 2 ex.
•  list* Creates a new list containing the items prepended to the rest, the 1 ex.
##### Use
Collections / Sequences > Lists
•  cons Returns a new seq where x is the first element and seq is the res 1 ex.
•  conj conj[oin]. Returns a new collection with the xs 'added'. (conj ni 1 ex.
•  peek For a list or queue, same as first, for a vector, same as, but much 1 ex.
•  pop For a list or queue, returns a new list/queue without the first ite 1 ex.
•  first Returns the first item in the collection. Calls seq on its argume 2 ex.
•  rest Returns a possibly empty seq of the items after the first. Calls seq 4 ex.

#### Maps

Collections / Sequences
##### Create
Collections / Sequences > Maps
•  hash-map keyval => key val Returns a new hash map with supplied mappings. 2 ex.
•  array-map Constructs an array-map. 3 ex.
•  zipmap Returns a map with the keys mapped to the corresponding vals. 1 ex.
•  sorted-map keyval => key val Returns a new sorted map with supplied mappings. 1 ex.
•  sorted-map-by keyval => key val Returns a new sorted map with supplied mappings, 1 ex.
•  bean Takes a Java object and returns a read-only implementation of the m 1 ex.
•  frequencies Returns a map from distinct items in coll to the number of times th 1 ex.
##### Use
Collections / Sequences > Maps
•  assoc assoc[iate]. When applied to a map, returns a new map of the same 1 ex.
•  assoc-in Associates a value in a nested associative structure, where ks is a 1 ex.
•  dissoc dissoc[iate]. Returns a new map of the same (hashed/sorted) type, t 1 ex.
•  find Returns the map entry for key, or nil if key not present. 2 ex.
•  key Returns the key of the map entry. 1 ex.
•  val Returns the value in the map entry. 3 ex.
•  keys Returns a sequence of the map's keys. 1 ex.
•  vals Returns a sequence of the map's values. 1 ex.
•  get Returns the value mapped to key, not-found or nil if key not present. 1 ex.
•  get-in Returns the value in a nested associative structure, where ks is a 1 ex.
•  update-in 'Updates' a value in a nested associative structure, where ks is a 3 ex.
•  select-keys Returns a map containing only those entries in map whose key is in ke 1 ex.
•  merge Returns a map that consists of the rest of the maps conj-ed onto th 1 ex.
•  merge-with Returns a map that consists of the rest of the maps conj-ed onto th 3 ex.
##### Use (Sorted Maps)
Collections / Sequences > Maps
•  rseq Returns, in constant time, a seq of the items in rev (which can be 1 ex.
•  subseq sc must be a sorted collection, test(s) one of <, <=, > or >=. Retu 1 ex.
•  subseq sc must be a sorted collection, test(s) one of <, <=, > or >=. Retu 1 ex.
•  rsubseq sc must be a sorted collection, test(s) one of <, <=, > or >=. Retu 1 ex.
•  rsubseq sc must be a sorted collection, test(s) one of <, <=, > or >=. Retu 1 ex.

#### Sets

Collections / Sequences
##### Create
Collections / Sequences > Sets
•  hash-set Returns a new hash set with supplied keys. 1 ex.
•  set Returns a set of the distinct elements of coll. 2 ex.
•  sorted-set Returns a new sorted set with supplied keys. 1 ex.
•  sorted-set-by Returns a new sorted set with supplied keys, using the supplied compa 1 ex.
##### Use
Collections / Sequences > Sets
•  conj conj[oin]. Returns a new collection with the xs 'added'. (conj ni 1 ex.
•  disj disj[oin]. Returns a new set of the same (hashed/sorted) type, that 1 ex.
•  get Returns the value mapped to key, not-found or nil if key not present. 1 ex.

#### Structs

Collections / Sequences
##### Create
Collections / Sequences > Structs
•  defstruct Same as (def name (create-struct keys...)) 1 ex.
•  create-struct Returns a structure basis object. 0 ex.
•  struct Returns a new structmap instance with the keys of the structure-bas 1 ex.
•  struct-map Returns a new structmap instance with the keys of the structure-bas 1 ex.
•  accessor Returns a fn that, given an instance of a structmap with the basis, 1 ex.
##### Use
Collections / Sequences > Structs
•  get Returns the value mapped to key, not-found or nil if key not present. 1 ex.
•  assoc assoc[iate]. When applied to a map, returns a new map of the same 1 ex.

#### Sequences

Collections / Sequences
##### Create
Collections / Sequences > Sequences
•  seq Returns a seq on the collection. If the collection is empty, retu 1 ex.
•  sequence Coerces coll to a (possibly empty) sequence, if it is not already o 1 ex.
•  repeat Returns a lazy (infinite!, or length n if supplied) sequence of xs. 1 ex.
•  replicate Returns a lazy seq of n xs. 1 ex.
•  range Returns a lazy seq of nums from start (inclusive) to end (exclusive 2 ex.
•  repeatedly Takes a function of no args, presumably with side effects, and retu 2 ex.
•  iterate Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of 3 ex.
•  lazy-seq Takes a body of expressions that returns an ISeq or nil, and yields 1 ex.
•  lazy-cat Expands to code which yields a lazy sequence of the concatenation o 1 ex.
•  cycle Returns a lazy (infinite!) sequence of repetitions of the items in co 1 ex.
•  interleave Returns a lazy seq of the first item in each coll, then the second et 3 ex.
•  interpose Returns a lazy seq of the elements of coll separated by sep 1 ex.
•  tree-seq Returns a lazy sequence of the nodes in a tree, via a depth-first wal 1 ex.
•  xml-seq A tree seq on the xml elements as per xml/parse 0 ex.
•  enumeration-seq Returns a seq on a java.util.Enumeration 0 ex.
•  iterator-seq Returns a seq on a java.util.Iterator. Note that most collections p 1 ex.
•  file-seq A tree seq on java.io.Files 1 ex.
•  line-seq Returns the lines of text from rdr as a lazy sequence of strings. r 2 ex.
•  resultset-seq Creates and returns a lazy sequence of structmaps corresponding to 0 ex.
##### Use (General)
Collections / Sequences > Sequences
•  first Returns the first item in the collection. Calls seq on its argume 2 ex.
•  second Same as (first (next x)) 1 ex.
•  last Return the last item in coll, in linear time 2 ex.
•  rest Returns a possibly empty seq of the items after the first. Calls seq 4 ex.
•  next Returns a seq of the items after the first. Calls seq on its argume 2 ex.
•  ffirst Same as (first (first x)) 2 ex.
•  nfirst Same as (next (first x)) 1 ex.
•  fnext Same as (first (next x)) 1 ex.
•  nnext Same as (next (next x)) 1 ex.
•  nth Returns the value at the index. get returns nil if index out of bou 1 ex.
•  nthnext Returns the nth next of coll, (seq coll) when n is 0. 1 ex.
•  rand-nth Return a random element of the (sequential) collection. Will have t 1 ex.
•  butlast Return a seq of all but the last item in coll, in linear time 2 ex.
•  take Returns a lazy sequence of the first n items in coll, or all items if 2 ex.
•  take-last Returns a seq of the last n items in coll. Depending on the type o 1 ex.
•  take-nth Returns a lazy seq of every nth item in coll. 1 ex.
•  take-while Returns a lazy sequence of successive items from coll while (pred i 1 ex.
•  drop Returns a lazy sequence of all but the first n items in coll. 1 ex.
•  drop-last Return a lazy sequence of all but the last n (default 1) items in col 1 ex.
•  drop-while Returns a lazy sequence of the items in coll starting from the first 1 ex.
•  keep Returns a lazy sequence of the non-nil results of (f item). Note, t 3 ex.
•  keep-indexed Returns a lazy sequence of the non-nil results of (f index item). Not 3 ex.
##### Use ('Modification')
Collections / Sequences > Sequences
•  conj conj[oin]. Returns a new collection with the xs 'added'. (conj ni 1 ex.
•  concat Returns a lazy seq representing the concatenation of the elements in 1 ex.
•  distinct Returns a lazy sequence of the elements of coll with duplicates remov 2 ex.
•  group-by Returns a map of the elements of coll keyed by the result of f on e 2 ex.
•  partition Returns a lazy sequence of lists of n items each, at offsets step a 1 ex.
•  partition-all Returns a lazy sequence of lists like partition, but may include pa 1 ex.
•  partition-by Applies f to each value in coll, splitting it each time f returns 2 ex.
•  split-at Returns a vector of [(take n coll) (drop n coll)] 1 ex.
•  split-with Returns a vector of [(take-while pred coll) (drop-while pred coll)] 1 ex.
•  filter Returns a lazy sequence of the items in coll for which (pred item) 1 ex.
•  remove Returns a lazy sequence of the items in coll for which (pred item) 1 ex.
•  replace Given a map of replacement pairs and a vector/collection, returns a 2 ex.
•  shuffle Return a random permutation of coll 1 ex.
##### Use (Iteration)
Collections / Sequences > Sequences
•  for List comprehension. Takes a vector of one or more binding-form/col 6 ex.
•  doseq Repeatedly executes body (presumably for side-effects) with binding 5 ex.
•  map Returns a lazy sequence consisting of the result of applying f to the 3 ex.
•  map-indexed Returns a lazy sequence consisting of the result of applying f to 0 1 ex.
•  mapcat Returns the result of applying concat to the result of applying map 1 ex.
•  reduce f should be a function of 2 arguments. If val is not supplied, retu 5 ex.
•  reductions Returns a lazy seq of the intermediate values of the reduction (as 1 ex.
•  max-key Returns the x for which (k x), a number, is greatest. 1 ex.
•  min-key Returns the x for which (k x), a number, is least. 2 ex.
•  doall When lazy sequences are produced via functions that have side effec 1 ex.
•  dorun When lazy sequences are produced via functions that have side effec 1 ex.

#### Transients

Collections / Sequences
##### Create
Collections / Sequences > Transients
•  transient Alpha - subject to change. Returns a new, transient version of the 2 ex.
•  persistent! Alpha - subject to change. Returns a new, persistent version of the 1 ex.
##### Use (General)
Collections / Sequences > Transients
•  conj! Alpha - subject to change. Adds x to the transient collection, and 1 ex.
•  pop! Alpha - subject to change. Removes the last item from a transient v 1 ex.
•  assoc! Alpha - subject to change. When applied to a transient map, adds ma 1 ex.
•  dissoc! Alpha - subject to change. Returns a transient map that doesn't con 1 ex.
•  disj! Alpha - subject to change. disj[oin]. Returns a transient set of th 1 ex.
##### Use ('Modification')
Collections / Sequences > Transients
•  conj conj[oin]. Returns a new collection with the xs 'added'. (conj ni 1 ex.
•  concat Returns a lazy seq representing the concatenation of the elements in 1 ex.
•  distinct Returns a lazy sequence of the elements of coll with duplicates remov 2 ex.
•  group-by Returns a map of the elements of coll keyed by the result of f on e 2 ex.
•  partition Returns a lazy sequence of lists of n items each, at offsets step a 1 ex.
•  partition-all Returns a lazy sequence of lists like partition, but may include pa 1 ex.
•  partition-by Applies f to each value in coll, splitting it each time f returns 2 ex.
•  split-at Returns a vector of [(take n coll) (drop n coll)] 1 ex.
•  split-with Returns a vector of [(take-while pred coll) (drop-while pred coll)] 1 ex.
•  filter Returns a lazy sequence of the items in coll for which (pred item) 1 ex.
•  remove Returns a lazy sequence of the items in coll for which (pred item) 1 ex.
•  replace Given a map of replacement pairs and a vector/collection, returns a 2 ex.
•  shuffle Return a random permutation of coll 1 ex.
##### Use (Iteration)
Collections / Sequences > Transients
•  for List comprehension. Takes a vector of one or more binding-form/col 6 ex.
•  doseq Repeatedly executes body (presumably for side-effects) with binding 5 ex.
•  map Returns a lazy sequence consisting of the result of applying f to the 3 ex.
•  map-indexed Returns a lazy sequence consisting of the result of applying f to 0 1 ex.
•  mapcat Returns the result of applying concat to the result of applying map 1 ex.
•  reduce f should be a function of 2 arguments. If val is not supplied, retu 5 ex.
•  reductions Returns a lazy seq of the intermediate values of the reduction (as 1 ex.
•  max-key Returns the x for which (k x), a number, is greatest. 1 ex.
•  min-key Returns the x for which (k x), a number, is least. 2 ex.
•  doall When lazy sequences are produced via functions that have side effec 1 ex.
•  dorun When lazy sequences are produced via functions that have side effec 1 ex.

### Code Structure

#### Varibles

Code Structure
##### Create
Code Structure > Varibles
•  def Please see http://clojure.org/special_forms#def 4 ex.
•  defonce defs name to have the root value of the expr iff the named var has no 1 ex.
•  intern Finds or creates a var named by the symbol name in the namespace ns 1 ex.
•  declare defs the supplied var names with no bindings, useful for making forwa 1 ex.
##### Use
Code Structure > Varibles
•  set! Please see http://clojure.org/special_forms#set 1 ex.
•  alter-var-root Atomically alters the root binding of var v by applying f to its cu 1 ex.
•  binding binding => var-symbol init-expr Creates new bindings for the (alre 1 ex.
•  with-bindings Takes a map of Var/value pairs. Installs for the given Vars the assoc 0 ex.
•  with-bindings* Takes a map of Var/value pairs. Installs for the given Vars the assoc 0 ex.
•  with-local-vars varbinding=> symbol init-expr Executes the exprs in a context in w 0 ex.
•  letfn Takes a vector of function specs and a body, and generates a set of 1 ex.
•  gensym Returns a new symbol with a unique name. If a prefix string is supp 2 ex.
##### Inspect
Code Structure > Varibles
•  var Please see http://clojure.org/special_forms#var 1 ex.
•  find-var Returns the global var named by the namespace-qualified symbol, or 0 ex.
•  var-get Gets the value in the var object 0 ex.
•  var? Returns true if v is of type clojure.lang.Var 1 ex.
•  bound? Returns true if all of the vars provided as arguments have any bound 1 ex.
•  resolve same as (ns-resolve *ns* symbol) 1 ex.
•  ns-resolve Returns the var or Class to which a symbol will be resolved in the 0 ex.
•  special-symbol? Returns true if s names a special form 0 ex.

#### Namespaces

Code Structure
##### Create & Delete
Code Structure > Namespaces
•  ns Sets *ns* to the namespace named by name (unevaluated), creating it 7 ex.
•  create-ns Create a new namespace named by the symbol if one doesn't already e 3 ex.
•  remove-ns Removes the namespace named by the symbol. Use with caution. Cannot 1 ex.
##### Inspect
Code Structure > Namespaces
•  *ns* A clojure.lang.Namespace object representing the current namespace. 1 ex.
•  ns-name Returns the name of the namespace, a symbol. 0 ex.
•  all-ns Returns a sequence of all namespaces. 1 ex.
•  the-ns If passed a namespace, returns it. Else, when passed a symbol, retu 1 ex.
•  find-ns Returns the namespace named by the symbol or nil if it doesn't exist. 1 ex.
•  ns-publics Returns a map of the public intern mappings for the namespace. 1 ex.
•  ns-interns Returns a map of the intern mappings for the namespace. 1 ex.
•  ns-refers Returns a map of the refer mappings for the namespace. 1 ex.
•  ns-aliases Returns a map of the aliases for the namespace. 0 ex.
•  ns-imports Returns a map of the import mappings for the namespace. 1 ex.
•  ns-map Returns a map of all the mappings for the namespace. 1 ex.
##### Use
Code Structure > Namespaces
•  in-ns Sets *ns* to the namespace named by the symbol, creating it if needed 2 ex.
•  ns-resolve Returns the var or Class to which a symbol will be resolved in the 0 ex.
•  ns-unalias Removes the alias for the symbol from the namespace. 0 ex.
•  ns-unmap Removes the mappings for the symbol from the namespace. 1 ex.
•  alias Add an alias in the current namespace to another namespace. Argumen 1 ex.
##### Misc
Code Structure > Namespaces
•  namespace-munge Convert a Clojure namespace name to a legal Java package name. 0 ex.
•  print-namespace-doc Print the documentation string of a Namespace. 0 ex.

#### Hierarchies

Code Structure
##### General
Code Structure > Hierarchies
•  make-hierarchy Creates a hierarchy object for use with derive, isa? etc. 1 ex.
•  derive Establishes a parent/child relationship between parent and tag. Par 2 ex.
•  underive Removes a parent/child relationship between parent and tag. h must 1 ex.
•  parents Returns the immediate parents of tag, either via a Java type inheri 1 ex.
•  ancestors Returns the immediate and indirect parents of tag, either via a Java 2 ex.
•  descendants Returns the immediate and indirect children of tag, through a relat 1 ex.
•  isa? Returns true if (= child parent), or child is directly or indirectly 2 ex.

#### User Defined Types

Code Structure
##### General
Code Structure > User Defined Types
•  defprotocol A protocol is a named set of named methods and their signatures: (d 2 ex.
•  defrecord Alpha - subject to change (defrecord name [fields*] options* sp 2 ex.
•  deftype Alpha - subject to change (deftype name [fields*] options* spec 1 ex.
•  reify reify is a macro with the following structure: (reify options* spec 1 ex.
•  extend Implementations of protocol methods can be provided using the extend 1 ex.
•  extend-protocol Useful when you want to provide several implementations of the same 1 ex.
•  extend-type A macro that expands into an extend call. Useful when you are suppl 1 ex.
•  extenders Returns a collection of the types explicitly extending protocol 0 ex.

Code Structure
##### General
•  meta Returns the metadata of obj, returns nil if there is no metadata. 1 ex.
•  with-meta Returns an object of the same type and value as obj, with map m a 1 ex.
•  vary-meta Returns an object of the same type and value as obj, with (apply f 1 ex.
•  reset-meta! Atomically resets the metadata for a namespace/var/ref/agent/atom 0 ex.
•  alter-meta! Atomically sets the metadata for a namespace/var/ref/agent/atom to be 0 ex.

### Environment

#### Require / Import

Environment
##### General
Environment > Require / Import
•  use Like 'require, but also refers to each lib's namespace using clojur 3 ex.
•  import import-list => (package-symbol class-name-symbols*) For each name 2 ex.
•  refer-clojure Same as (refer 'clojure.core ) 1 ex.
•  refer refers to all public vars of ns, subject to filters. filters can in 1 ex.

#### Code

Environment
##### General
Environment > Code
•  *compile-files* Set to true when compiling files, false otherwise. 0 ex.
•  *compile-path* Specifies the directory where 'compile' will write out .class files 0 ex.
•  *file* The path of the file being evaluated, as a String. Evaluates to ni 0 ex.
•  *warn-on-reflection* When set to true, the compiler will emit warnings when reflection is 1 ex.
•  compile Compiles the namespace named by the symbol lib into a set of classf 0 ex.
•  load Loads Clojure code from resources in classpath. A path is interpreted 1 ex.
•  load-file Sequentially read and evaluate the set of forms contained in the file 3 ex.
•  load-string Sequentially read and evaluate the set of forms contained in the st 0 ex.
•  read Reads the next object from stream, which must be an instance of jav 1 ex.
•  gen-class When compiling, generates compiled bytecode for a class with the gi 1 ex.
•  gen-interface When compiling, generates compiled bytecode for an interface with t 0 ex.
•  loaded-libs Returns a sorted set of symbols naming the currently loaded libs 0 ex.
•  test test [v] finds fn at key :test in var metadata and calls it, presum 1 ex.

#### IO

Environment
##### General
Environment > IO
•  *in* A java.io.Reader object representing standard input for read operatio 0 ex.
•  *out* A java.io.Writer object representing standard output for print operat 0 ex.
•  *err* A java.io.Writer object representing standard error for print operati 0 ex.
•  print Prints the object(s) to the output stream that is the current value 1 ex.
•  printf Prints formatted output, as per format 1 ex.
•  println Same as print followed by (newline) 1 ex.
•  pr Prints the object(s) to the output stream that is the current value 2 ex.
•  prn Same as pr followed by (newline). Observes *flush-on-newline* 0 ex.
•  print-str print to a string, returning it 1 ex.
•  println-str println to a string, returning it 1 ex.
•  pr-str pr to a string, returning it 1 ex.
•  prn-str prn to a string, returning it 1 ex.
•  newline Writes a newline to the output stream that is the current value of 0 ex.
•  flush Flushes the output stream that is the current value of *out* 0 ex.
•  read-line Reads the next line from stream that is the current value of *in* . 1 ex.
•  slurp Reads the file named by f using the encoding enc into a string and 3 ex.
•  spit Opposite of slurp. Opens f with writer, writes content, then close 2 ex.
•  with-in-str Evaluates body in a context in which *in* is bound to a fresh Strin 1 ex.
•  with-out-str Evaluates exprs in a context in which *out* is bound to a fresh Str 1 ex.
•  with-open bindings => [name init ...] Evaluates body in a try expression wit 1 ex.

#### REPL

Environment
##### General
Environment > REPL
•  *1 bound in a repl thread to the most recent value printed 1 ex.
•  *2 bound in a repl thread to the second most recent value printed 1 ex.
•  *3 bound in a repl thread to the third most recent value printed 2 ex.
•  *e bound in a repl thread to the most recent exception caught by the rep 1 ex.
•  *print-dup* When set to logical true, objects will be printed in a way that prese 1 ex.
•  *print-length* *print-length* controls how many items of each collection the print 1 ex.
•  *print-level* *print-level* controls how many levels deep the printer will print 0 ex.
•  *print-meta* If set to logical true, when printing an object, its metadata will al 0 ex.
•  *print-readably* When set to logical false, strings and characters will be printed wit 0 ex.

#### Misc

Environment
##### General
Environment > Misc
•  *clojure-version* The version info for Clojure core, as a map containing :major :minor 1 ex.
•  clojure-version Returns clojure version as a printable string. 1 ex.
•  *command-line-args* A sequence of the supplied command line arguments, or nil if none w 1 ex.
•  time Evaluates expr and prints the time it took. Returns the value of ex 2 ex.