Like defn, but the resulting function name is declared as a macro and will be used as a macro by the compiler when it is called.
Creates a new multimethod with the associated dispatch function. The docstring and attr-map are optional. Options are key-value pairs and may be one of: :default The default dispatch value, defaults to :default :hierarchy The value used for hierarchical dispatch (e.g. ::square is-a ...
Like deftest but creates a private var.
Same as (def name (create-struct keys...))
Experimental - like defmacro, except defines a named function whose body is the expansion, calls to which may be expanded inline as if it were a macro. Cannot be used with variadic (&) args.
Creates and installs a new method of multimethod associated with dispatch-value.
(defrecord name [fields*] options* specs*) Options are expressed as sequential keywords and arguments (in any order). Supported options: :load-ns - if true, importing the record class will cause the namespace in which the record was defined to be loaded. Defaults t...
A protocol is a named set of named methods and their signatures: (defprotocol AProtocolName ;optional doc string "A doc string for AProtocol abstraction" ;options :extend-via-metadata true ;method signatures (bar [this a b] "bar docs") (baz [this a] [this a b] [this a b ...
Creates a new Java interface with the given name and method sigs. The method return types and parameter types may be specified with type hints, defaulting to Object if omitted. (definterface MyInterface (^int method1 [x]) (^Bar method2 [^Baz b ^Quux q]))
Default map of data reader functions provided by Clojure. May be overridden by binding *data-readers*.