cheat sheets.

$ cheat clojure
;comment
symbol a-zA-Z0-9*+!-_? ; <- both are valid symbols
:keyword
\c \h \a \r \a \c \t \e \r \newline \space \tab \return \linefeed
"string"
#"regex"

(a b c) ; list
[1 2 3] ; vector
{:a 1 :b 2} ; map
#{:a :b :c} ; set

(fn [x y] (+ x y)) ; anonymous fn
#(+ 1 1)         ; short version, not a replacement for fn, eg. does not nest
#(inc %)         ; one argument
#(+ %1 %2)       ; numbered arguments
#(apply + %1 %2 %&) ; varargs

^x   ; (meta x)
#^y x  ; *not* equivalent to (with-meta x y)
@x   ; (deref x)
#'x ; (var x)

; cool stuff
(-> {:foo {:bar :bat}} :foo :bar) ; gets :bat
(take 10 (repeatedly rand))       ; 10 random numbers

; Java interop
(Classname. args*)
; Old syntax: (Classname. ...) to be preferred
(new Classname args*)

(.getBytes "foo") ; "foo".getBytes();
(Math/sqrt x) ; Math.sqrt(x);

(.instanceMember instance args*)
(.instanceMember Classname args*)
(Classname/staticMethod args*)

; Old syntax: (.method ...) (Class/staticMethod ...) to be preferred
(. instance-expr member-symbol)
(. Classname-symbol member-symbol)
(. instance-expr (method-symbol args*)) or
(. instance-expr method-symbol args*)
(. Classname-symbol (method-symbol args*)) or
(. Classname-symbol method-symbol args*)

(-> instance-expr (.method ...) (.method ...))
; Obsoleted by the more general ->
(.. instance-expr member+)
(.. Classname-symbol member+)

(doto obj (.instanceMember) (.anotherInstanceMember args*) ...)
Version 7, updated 823 days ago.
. o 0 ( | previous | history | revert to | current | diff )
( add new | see all )