Clojure is a robust and practical programming language that is fast and easy to use. It also has a number of useful features that make it a powerful, simple, and coherent tool. Clojure is a dynamic programming language that can be used for general purposes. It combines the simplicity and interactivity of a scripting language and an efficient and robust infrastructure to support multithreaded programming. Clojure can be compiled, but it is completely dynamic. All features supported by Clojure are supported at runtime. Clojure has easy access to Java frameworks. It also supports type hints, type inference, and optional type hints. This allows Java calls to avoid reflection. Clojure is a dialect Lisp and shares the code-as data philosophy and powerful macro system. Clojure is a functional programming language that features a rich array of persistent, immutable data structures. Clojure provides a software transactional memory and reactive agent system for mutable states.