Clojure's Core Library

Getting a handle on all the functionality you'll want to use can be a little daunting at first, especially if you're coming from object-oriented languages like Java, Ruby, or Python, where behavior is grouped using classes. In Clojure, namespaces are used to group similar behavior and state, and we've outlined a few of the core namespaces to help you find what you're looking for.

Extensible Data Notation is a subset of the Clojure language used as a data transfer format, designed to be used in a similar way to JSON or XML.

At some point in your adventures in Clojure land, you'll want to deserialize some clojure data structures from a string, and you'll want to use clojure.edn/read or clojure.edn/read-string for that. Do not use the read-* functions in clojure.core to deserialize untrusted Clojure code, as they can be unsafe.

Provides most standard string manipulation and processing function that you'd expect in any general-purpose programming language.

In Clojure and ClojureScript strings are represented using the native platform implementation, and can be directly manipulated, e.g. (.toLowerCase "FOO") ;=> "foo". The clojure.string namespace gives you the ability to manipulate strings in an idiomatic way: (clojure.string/lower-case "FOO") ;=> "foo".

Something to keep in mind is most (all?) of these functions take the string to act on as the first parameter, lending themselves well for use with the single-thrush operator (->) , as in this contrived example:

Functional tree editing and manipulation. One of the core benefits of using Clojure is that you mostly work with immutable data structures. This, in turn, seems to make your programs easier to build and maintain.