I don't know Scala, so I can't offer a comparison, but I am actively using Clojure in bioinformatics projects.
The Java integration is excellent, and I have had no problem making use of the BioJava libraries.
Where Clojure's concurrency model shines is in the immutable default data types and functional programming with the seq abstraction.
In my bioinformatic work I very often find myself with a lot input data (say gene sequences) which need to be subjected to the same analysis. Once I have my analysis function I can map
it over a sequence of inputs (with the results lazily generated). I have gotten full utilization of a large 48-core server simply by changing that map
to a pmap.
Large scale parallelization with a single character change is hard to beat!
Of course pmap
isn't a magic bullet and only helps when the analysis function computationally dominates, but the fact that map
and pmap
can just be plugged in and out shows the elegance and simplicity enabled by Clojure's design.