The big difference is that Clojure defaults to immutable data structures. While you can chain functions together in Java and Python, you still have to manually keep track of all the references.<p>The main benefit of modern functional languages is in their use of revisioned data structures. This has same benefits as garbage collection.<p>Without GC you have to manually track where you allocate and deallocate things, and this is highly error prone. With GC the runtime does this for you, and you can focus on other things.<p>Same thing applies with mutable and immutable data. With mutable data structures all the changes are done in place, and you have to keep track of everywhere it&#x27;s used to update it predictably. With immutable data structures you&#x27;re &quot;copying&quot; the data any time you make a change, and the runtime keeps track of the references for you.