uh... clojure is a lisp and supports full blown macros. Surem 95% of the time, Functions, plain data and a bit of polymorphism is all you need. those higher abstractions are for flattening the curve on making easy to use libraries. They are sharp tools. Go decides to hand you safety scissors, clojure gives you a high end razor sharp knife and expects you to be educated on its proper usage.