<story><title>Shall We Use Clojure?</title><url>http://www.andrewhjon.es/142343729</url></story><parent_chain></parent_chain><comment><author>JackC</author><text>The other thing I think is worth considering in a move to Clojure is how different functional thinking is. I mean, if you&apos;re used to moving between C and Perl and Python and PHP and Java and Javascript and so on, you&apos;re used to language transitions within more or less the same paradigm. It feels like a categorically different problem to try to transition a team from one of those to a functional language.&lt;p&gt;I&apos;m thinking in particular of this section from O&apos;Reilly&apos;s Clojure book: &lt;a href=&quot;http://books.google.com/books?id=I8KdEKceCHAC&amp;#38;ots=wNiLN6Tce5&amp;#38;pg=PA138&quot; rel=&quot;nofollow&quot;&gt;http://books.google.com/books?id=I8KdEKceCHAC&amp;#38;ots=wNiLN6...&lt;/a&gt;&lt;p&gt;They lay out a couple of algorithms in an imperative style, and then gradually morph them into a functional style. It&apos;s pretty wild: you go from a story, &quot;do this, then do this, then do this&quot; to a math problem: &quot;your answer is a list composed of f() of g() of h() of another list&quot;. (Unfortunately you only get snippets from that link -- it&apos;s worth the money to get the whole thing if you&apos;re interested.)&lt;p&gt;Anyway, having followed through their examples and done some of my own Clojure programming, I ended up not so convinced that people who are good at solving story-style imperative problems will necessarily be good at solving math-style functional problems. It felt like a different part of my brain.&lt;p&gt;This is not &lt;i&gt;at all&lt;/i&gt; a reason not to dabble with functional languages, just a potential pitfall to be aware of if you&apos;re thinking of bringing a whole team over. And maybe I&apos;m overstating it? I haven&apos;t dabbled too much myself.</text></comment>
<story><title>Shall We Use Clojure?</title><url>http://www.andrewhjon.es/142343729</url></story><parent_chain></parent_chain><comment><author>spacemanaki</author><text>This example is missing the corresponding Clojure code, which is important for Java interop:&lt;p&gt;&lt;pre&gt;&lt;code&gt;    object.method(arg) // Java 

    (.method object arg) ; Clojure 
&lt;/code&gt;&lt;/pre&gt;
I&apos;m not sure if focusing on syntax and succinctness is such a great approach though. When I&apos;ve discussed Clojure with colleagues familiar with Java, they&apos;ve been more interested in the concurrency support via immutable data structures and reference types, which really sets Clojure apart from other Lisps. I think it&apos;s a much more compelling sell that way, since Java programmers seem to be attached to Java&apos;s syntax and static typing, but are aware of how difficult it is to write correct concurrent code. YMMV of course.</text></comment>