&quot;So, in summary, we chose Clojure for JVM threads + Database drivers, the ability to ship an uberjar and the <i>ease of expressing tree manipulations</i> which were the core piece of complexity in our backend.&quot;<p>for people who may not know clojure here is an example of tree manipulations, it&#x27;s really powerful especially in UI programming which is all about manipulating recursive structures: <a href="https:&#x2F;&#x2F;gist.github.com&#x2F;dustingetz&#x2F;c11ae4edb9e0d14787d2" rel="nofollow">https:&#x2F;&#x2F;gist.github.com&#x2F;dustingetz&#x2F;c11ae4edb9e0d14787d2</a><p>Scala has answers to this too (I would love for someone to reply with the best scala way) but for whatever subjective reasons the clojure way makes me happier for ui work.<p>As to scala pushing towards typed object mappers, here is one example of generating untyped queries with Anorm [1], I&#x27;d be surprised if this couldn&#x27;t be made to work for their query language, but that said the scala ecosystem has a lot of, shall we say &quot;diversity of opinion&quot; about the Proper Way To Do Things, so I am not surprised that newcomers to the language had a bad time.<p>[1] (2013) <a href="http:&#x2F;&#x2F;www.dustingetz.com&#x2F;2013&#x2F;03&#x2F;26&#x2F;orm.html" rel="nofollow">http:&#x2F;&#x2F;www.dustingetz.com&#x2F;2013&#x2F;03&#x2F;26&#x2F;orm.html</a>