Clojure is very different from imperative languages such as Java / C / Go. A Clojure program is represented entirely as a data structure.
Let’s first look at how Clojure represents data in its source file.
{ <key> <value> <key> <value> ... }
Symbols are commonly known as variables. We will use the terminology symbols as they are part of data specification.
My personal favourite feature of Clojure is amazingly generous naming rule.
The following are all valid symbol names:
get-record-from-id
id->record
x
,x'
,x''
<--*-->
: Yes, you can have a symbol like this. It’s crazy.∮
: Yes, this can be valid Clojure code:(∮ x' dx)
:age
:runtime-port