Liking cljdoc? Tell your friends :D

clojure.core symbols

1. Special forms

1.1. Clojure

;; As of clojure 1.8.0

(keys (sort (. clojure.lang.Compiler specials)))
; => (& . case* catch def deftype* do finally fn* if let* letfn* loop* monitor-enter
;     monitor-exit new quote recur reify* set! throw try var clojure.core/import*)

(count (keys (sort (. clojure.lang.Compiler specials))))
; => 24

1.2. ClojureScript

;; As of clojurescript 1.10.238

. case* catch def defrecord* deftype* do finally fn* if
in-ns js* let* letfn* load load-file load-namespace loop* new ns
ns* quote recur set! throw try var

;; total 27 special forms

2. clojure.core macro symbols

(->> (ns-publics 'clojure.core)
     vals
     (filter #(get-in (meta %) [:macro]))
     (map str)
     sort)
; ("->" "->>" ".." "amap" "and" "areduce" "as->" "assert" "binding" "bound-fn" "case"
;  "comment" "cond" "cond->" "cond->>" "condp" "declare" "definline" "definterface"
;  "defmacro" "defmethod" "defmulti" "defn" "defn-" "defonce" "defprotocol" "defrecord"
;  "defstruct" "deftype" "delay" "doseq" "dosync" "dotimes" "doto" "extend-protocol"
;  "extend-type" "fn" "for" "future" "gen-class" "gen-interface" "if-let" "if-not"
;  "if-some" "import" "io!" "lazy-cat" "lazy-seq" "let" "letfn" "locking" "loop" "memfn"
;  "ns" "or" "proxy" "proxy-super" "pvalues" "refer-clojure" "reify" "some->" "some->>"
;  "sync" "time" "vswap!" "when" "when-first" "when-let" "when-not" "when-some" "while"
;  "with-bindings" "with-in-str" "with-loading-context" "with-local-vars" "with-open"
;  "with-out-str" "with-precision" "with-redefs")

(->> (ns-publics 'clojure.core)
     vals
     (filter #(get-in (meta %) [:macro]))
     count)
; => 79

3. cljs.core macro symbols

user> (->> (ns-publics 'cljs.core)
           vals
           (filter #(get (meta %) :macro))
           (remove #(get (meta %) :cljs.analyzer/numeric))
           (map str)
           sort
           count)
135

user> (->> (ns-publics 'cljs.core)
           vals
           (filter #(get (meta %) :macro))
           (map str)
           sort)
; ("->" "->>" ".." "aget" "alength" "amap" "and" "areduce" "array" "array-map" "as->" "aset"
;  "assert" "binding" "bit-test" "bitpos" "byte" "caching-hash" "case" "coercive-="
;  "coercive-boolean" "coercive-not" "coercive-not=" "comment" "cond" "cond->" "cond->>"
;  "condp" "copy-arguments" "declare" "defmacro" "defmethod" "defmulti" "defn" "defn-"
;  "defonce" "defprotocol" "defrecord" "deftype" "delay" "doseq" "dotimes" "doto" "double"
;  "es6-iterable" "exists?" "extend-protocol" "extend-type" "false?" "float" "fn" "for"
;  "gen-apply-to" "gen-apply-to-simple" "goog-define" "hash-map" "hash-set" "identical?"
;  "if-let" "if-not" "if-some" "implements?" "import" "import-macros" "instance?"
;  "js-arguments" "js-comment" "js-debugger" "js-delete" "js-in" "js-inline-comment"
;  "js-obj" "js-str" "keyword?" "lazy-cat" "lazy-seq" "let" "letfn" "list" "load-file*"
;  "locking" "loop" "macroexpand" "macroexpand-1" "make-array" "mask" "memfn" "nil?"
;  "ns-imports" "ns-interns" "ns-publics" "ns-unmap" "number?" "or" "refer-clojure"
;  "reify" "require" "require-macros" "resolve" "satisfies?" "short" "simple-benchmark"
;  "some->" "some->>" "some?" "specify" "specify!" "str" "string?" "symbol?" "this-as"
;  "time" "true?" "truth_" "undefined?" "unsafe-cast" "use" "use-macros" "vector"
;  "vswap!" "when" "when-first" "when-let" "when-not" "when-some" "while"
;  "with-out-str" "with-redefs")

3.1. ClojureScript macros included in the debux library additionally

:skip-form-itself-type
  "goog-define" "import-macros" "js-comment" "js-inline-comment" "require" "require-macros"
  "simple-benchmark"  "specify" "specify!" "use" "use-macros"

:skip-arg-1-type
  "this-as"

experimental --> ignored
  "implements?" "unsafe-cast"

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close