================================================================================
Empty list
================================================================================

(
)
(
    )

--------------------------------------------------------------------------------

(
 )
(
 )

================================================================================
List starting with symbol
================================================================================

(abc
)
(abc
def)
(abc def
ghi)

--------------------------------------------------------------------------------

(abc
  )
(abc
  def)
(abc def
  ghi)

================================================================================
List starting with number
================================================================================

(123
)
(123
456)
'(123 456
789)
'(1 2 3 4
5 6 7 8)

--------------------------------------------------------------------------------

(123
 )
(123
 456)
'(123 456
  789)
'(1 2 3 4
  5 6 7 8)

================================================================================
List starting with keyword
================================================================================

(:abc
)
(:abc
:def)
(:abc :def
:ghi)

--------------------------------------------------------------------------------

(:abc
 )
(:abc
 :def)
(:abc :def
 :ghi)

================================================================================
Many args
================================================================================

(defn many-args [a b c
d e f])

--------------------------------------------------------------------------------

(defn many-args [a b c
                 d e f])

================================================================================
Multi-arity
================================================================================

(defn multi-arity
([x]
body)
([x y]
body))

--------------------------------------------------------------------------------

(defn multi-arity
  ([x]
   body)
  ([x y]
   body))

================================================================================
Vectors
================================================================================

[]
[
]
[a]
[a
]
[
a]
[a b]
[a b
]
[a
b
]
[
a
b
]
[a b c]
[a b c
]
[a b
c
]
[a
b
c
]
[
a
b
c
]

--------------------------------------------------------------------------------

[]
[
 ]
[a]
[a
 ]
[
 a]
[a b]
[a b
 ]
[a
 b
 ]
[
 a
 b
 ]
[a b c]
[a b c
 ]
[a b
 c
 ]
[a
 b
 c
 ]
[
 a
 b
 c
 ]

================================================================================
Maps
================================================================================

{}
{
}
{a b}
{a b
}
{a
b
}
{
a
b
}
{a b c d}
{a b c d
}
{a b c
d}
{a b
c d
}
{a
b c d}
{a
b c
d}

--------------------------------------------------------------------------------

{}
{
 }
{a b}
{a b
 }
{a
 b
 }
{
 a
 b
 }
{a b c d}
{a b c d
 }
{a b c
 d}
{a b
 c d
 }
{a
 b c d}
{a
 b c
 d}

================================================================================
Sets
================================================================================

#{}
#{
}
#{a}
#{a
}
#{
a}
#{a b}
#{a b
}
#{a
b
}
#{
a
b
}
#{a b c}
#{a b c
}
#{a b
c
}
#{a
b
c
}
#{
a
b
c
}

--------------------------------------------------------------------------------

#{}
#{
  }
#{a}
#{a
  }
#{
  a}
#{a b}
#{a b
  }
#{a
  b
  }
#{
  a
  b
  }
#{a b c}
#{a b c
  }
#{a b
  c
  }
#{a
  b
  c
  }
#{
  a
  b
  c
  }

================================================================================
Reader conditional
================================================================================

#?(:clj 1
:cljs 2)

#?@(:clj [1]
:cljs [2])

--------------------------------------------------------------------------------

#?(:clj 1
   :cljs 2)

#?@(:clj [1]
    :cljs [2])

================================================================================
Multiline strings
================================================================================

"asdasd
 asdas
     aksjdlkj
lkjdlk"
(def x
"asdasd
 asdas
     aksjdlkj
lkjdlk")
(def y [
"asdas"
"adasd"
"adasd"
])

--------------------------------------------------------------------------------

"asdasd
 asdas
     aksjdlkj
lkjdlk"
(def x
  "asdasd
 asdas
     aksjdlkj
lkjdlk")
(def y [
        "asdas"
        "adasd"
        "adasd"
        ])

================================================================================
Requires
================================================================================

(ns abc
(:requires
[a.b.c :as c]
[d.e.f :as f]))
(ns abc
(:requires [a.b.c :as c]
[d.e.f :as f]))

--------------------------------------------------------------------------------

(ns abc
  (:requires
   [a.b.c :as c]
   [d.e.f :as f]))
(ns abc
  (:requires [a.b.c :as c]
   [d.e.f :as f]))

================================================================================
Or
================================================================================

(or cond-1 cond-2)
(or cond-1
cond-2)
(or
cond-1
cond-2)

--------------------------------------------------------------------------------

(or cond-1 cond-2)
(or cond-1
  cond-2)
(or
  cond-1
  cond-2)

================================================================================
Threading
================================================================================

(-> a b c)
(-> a b
c)
(-> a
b
c)
(->
a
b
c)

--------------------------------------------------------------------------------

(-> a b c)
(-> a b
  c)
(-> a
  b
  c)
(->
  a
  b
  c)

================================================================================
Threading
================================================================================

(do a b c)
(do a b
c)
(do a
b
c)
(do
a
b
c)

--------------------------------------------------------------------------------

(do a b c)
(do a b
  c)
(do a
  b
  c)
(do
  a
  b
  c)

================================================================================
Everything
================================================================================

(letfn [(square [x]
(* x x))
(sum [x y]
(+ x y))]
(let [x 3
y 4]
(sum (square x)
(square y))))

--------------------------------------------------------------------------------

(letfn [(square [x]
          (* x x))
        (sum [x y]
          (+ x y))]
  (let [x 3
        y 4]
    (sum (square x)
      (square y))))
