I started to learn in bits and chunks about Clojure. While reading, it made me think how a non-trivial system in it will look. There are solutions to common problems, but it would be nice to see it manifest.
I plan to write more, but these are interesting links that I picked up on the topic.
I was interested in answering your question : “How would you write code in Clojure?” Or, how would you write a really big system in it.
This is about dealing with the balance of the utility of a specific data structure/class vs. a general data structure, such as a list, and the engineering balance/consideration you have to deal with
This is a very long and very long-winded diatribe against OOP. I like reading diatribes against OOP, because they are geeky fun reads. But he had some interesting thoughts along the way; his counter-examples all use Clojure, so this got me into looking into Clojure more.
An article on the many ways OOP is failing.
Application architecture in Clojure: http://matthiasnehlsen.com/blog/2014/09/24/Building-Systems-in-Clojure-1/ http://matthiasnehlsen.com/blog/2014/10/06/Building-Systems-in-Clojure-2/ http://matthiasnehlsen.com/blog/2014/10/30/Building-Systems-in-Clojure-3/ http://matthiasnehlsen.com/blog/2014/11/07/Building-Systems-in-Clojure-4/
These articles are a little tough, since it tackles complex topics, but it’s interesting nonetheless.
This library addresses large-system dependency injection in Clojure applications. The README in it is interesting, in perspective.