Introduction
This chapter is for Clojure programmers to jump to the next step and contains advanced concepts and techniques, including destructing, functional programming, and macros. Clojure's macros are very strongly inherited from Lisp. You will learn how to realize polymorphism in Clojure using protocol and multimethod. Finally, you will dive into the transducers and logic programming that take you to Clojure's fantastic world!