the blog for developers

Clojure vs Scala, Part 2

44394163 61e6c2ab04 m Clojure vs Scala, Part 2
Photo by PhillipC

There are two languages stirring up the Java World: Clojure and Scala. Clojure a Lisp dialect on the JVM, powerful and pure and the Scala language a tight integration of object and functional programming. Which should you learn? Matt is wondering:

The two leading candidates in the JVM/concurrent/multicore arena seem to be Scala and Clojure. [...] Scala is a multiparadigm language, supporting both object-oriented and functional constructs. It is statically typed, yet offers very nice type inference. Clojure, on the other hand, is a functional Lisp derivative with almost no OO constructs that is dynamically typed. Both are designed to enable concurrent programming. Which one do I choose?

Clojure

Clojure as the first contender to the Java throne came out of nowhere and conquered the blogosphere in a storm.

Clojure [...] is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. [...] Clojure provides easy access to the Java frameworks [...] Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system.

There is some traction with companies already, FlightCaster who predict flight delays use Clojure for backend code:

The research and data heavy lifting is all in Clojure.

Some obvious reasons that speak for Clojure:

  • Big momentum, mainly in the dynamic language (Ruby) avant-garde and in Lisp circles
  • LISP community
  • STM, software transactional memory, an easy way to share data
  • Very clever immutable datastructures
  • Well thought Seq concept, tightly integrated with Java

Depending on your standpoint there are some downers with Clojure:

  • no objects (might not be a problem for you)
  • hard to read for C tradition developers, this does include the many (), prefix notation and functional programming style in Lisp
  • no Lisp skills in most companies, harder to recruit than Java or Scala

Clojures Java Integration

Although it does not possess objects, astonishingly Clojure has excellent Java integration. This might be because one of the main arguments of Clojure it makes against other Lisp dialects is the Java plattform. So it does make a lot of sense of excellent integration.

  • Java methods as functions in Clojure
    (map (memfn charAt i) ["fred" "ethel" "lucy"] [1 2 3])
    
  • Collections in Clojure implement Collection
  • Functions implement Callable and Runnable
  • “Core abstractions, like seq, are Java interfaces”
  • “Clojure seq library works on Java Iterables, Strings and arrays”

Scala

Scala is the rising star on the JVM. James Strachan, the inventor of Groovy writes: “I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I’d probably have never created Groovy.” Though one must admit the Groovy back than is not the Groovy from today. The question remains: What is Scala?

Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages, enabling Java and other programmers to be more productive. Code sizes are typically reduced by a factor of two to three when compared to an equivalent Java application.

The main reasons for using Scala:

  • Big momentum, mainly among Java developers
  • Java community
  • Has objects (might not be a plus for some)
  • Very powerful type system
  • Object oriented and functional integration

Some downers:

  • Functional programming can be difficult to understand for a Java developer
  • The type system is more complex than the Java one (might be a plus for you)
  • Actor concurrency in Scala is nice, STM feels more natural to lots of problems (shared state vs. agents), Akka could help
  • Scala is very powerful, some developers might shoot themselves into the foot

The biggest promise of Scala nevertheless is power and terseness. As I’ve showed in “Top 5 Things to Know About Constructors in Scala”, Scala has much less boilerplate code. This example in Java:

 public class Foo() {
   private Bar bar;

   public Foo(Bar bar) {
       this.bar = bar;
   }

   public Bar getBar() {
      return bar;
   }
   public void setBar(Bar bar) {
      this.bar = bar;
   }
}

can be written in Scala in one line:

class Foo(@BeanProperty var bar:Bar)

Which is important, to a degree that you should drop setter and getters if not needed. I wrote in “Go Ahead: Next Generation Java Programming Style”:

If you have simple data holders or data transfer objects, don’t write boiler plate code with getters and setters. I know this is heresy in Java, but just use public fields.

Scalas Java integration

Scala has good, but compared to Clojure a rather basic integration. One can implement Java interfaces in Java, extend Java classes and vise versa. Scala isn’t tightly integrated on the API side – only with some in this context clumsy, unneeded Meta-Programming with impliciets. Scala promises Clojure like Collection integration with Java in the future – we’ll see. From the Java side things also do not look as nice, Scala classes and traits have lots of ugly named methods, until IDEs know how to deal with this, code completion is spammed by Scala.

As a side note, Groovy has also deeper Java integration that leverages the dynamic nature of Groovy. For example the “as” keyword.
With as closures or maps can easily be coerced to a Java interface. This goes beyond the Scala way of implementing interfaces.

def readable = { it.put("12 34".reverse()); 5 } as Readable

Nice, wish to have this in Scala – the map version if as will be hard to make play nice with static typing.

Conclusion

Andrew Glower wrote last year:

Is Scala or Clojure poised for stardom? Can two languages co-exist as stars or does one invariably outshine the other? If history is any indication, then I’d venture to guess that the answer is that both can’t be stars– just like both Groovy and JRuby aren’t stars. They co-exist and, in truth, divide the market and have followers with strong opinions on both sides. Thus, if I had to guess right now, I’d say that Scala has the edge with some good momentum.

I concur. The conclusion might not be what you want to hear. Draw your own.

Clojure has a lot of appeal to me, it looks so clean, the Java integration has such a pure feel, hard to describe. I do not buy the argument that Lisp is so much more powerful than e.g. Scala – so this doesn’t influence me much. And Clojure as a Lisp dialect is way out of the mainstream. It will make it hard to recruit developers – do not listen to people who declare this a non issue. I’ve been recruiting Java developers for years, and it’s hard. It’s much harder for Clojure.

Scala isn’t as pure as Clojure, not as en vogue. But it is pragmatic and powerful. It has a lot of momentum now and is easily learned by Java developers – at least by those that are open enough. The good ones usually are. The main promise and reason for Scala is how much less lines of code you need than in Java. Less code, less bugs, easier to read – to some extent – and faster to write, leading to higher productivity. Who doesn’t need higher productivity with the same safety as Java?

Which should you use in your company? Daniel warns on Stackoverflow, in “Scala vs. Groovy vs. Clojure”:

It’s also a much more dynamic language than Java, in the sense that the language evolve. From the perspective of the language, that’s a good thing. From the perspective of users who plan on having thousands of lines of code written on it, not so.

You need to decide on your own. Which would I use? Scala. Which should you learn? Both obviously.

What is your plan?

You can leave a Reply here. Of course, you should follow me on twitter here.

You can share this post!
Do you want to tell others about this article? Use the social bookmark icons to submit this artice to the service of your choice. Thanks.

About the author: Stephan Schmidt is head of development at brands4friends. He has more than 15 years of internet technology experience and 10 years experience in agile. He was head of development, consultant and CTO and is a speaker, author and blog writer. He specializes in organizing and optimizing software development helping companies by increasing productivity with lean software development and agile methodologies. Want to know more? All views are only his own.

1 Comment 22 Comments 46 Tweets

Leave a reply.

Comments

i will wait for scala 2.8 to use it in production ..

Great post that raises a very important question.

My experience led me to the same conclusion as yours regarding Java integration: In Clojure the integration is indeed clean and almost seamless. I especailly noticed that when I developed Waterfront – A light-weight clojure based IDE. Although the code uses many Swing APIs (incl. subclassing, customization, etc.) the process was surprisingly painless.

On the other hand, in Scala, the naming scheme of methods/classes makes Java integration much less straight forward.

On the other hand, no one can deny Scala’s impressive static typing capabilities. Seems like a great plus if you’re a static typing kind of guy.

Anyway, my bottom line is this: both languages make it a bit too easy for a programmer to shoot his own foot.

In Scala this is due to the type system: It does go an extra mile (compared to Java) but the road is still long and I am not sure an extra mile buys you that much when compared to the the increased mental burden of using these constructs.

In Clojure, the caveat is its flexibility. The number of choices the programmer already has, for almost any decision, is overwhelming. Again, this is essentially a good thing, but if the programmer is not careful enough he/she may find him/her self spending too much weighing the different options rather than getting things done.

I think it’s worth considering that it is not always going to be a this vs. that consideration. As many have said already, polyglot programming is the name of the game these days. I can easily envision a company that builds on top of the JVM using a combination of Java, Scala, Clojure, Groovy and even C/C++ all within one application. For instance, perhaps legacy code is in Java, while new libraries are written in Scala. Clojure might be used for data analysis needs. Groovy could be used via Gradle to power the builds (or perhaps extending on top of Ant), while C and/or C++ might be used for JNI integration with low-level hardware. Personally, I see nothing wrong with that picture and can readily see the utility of each language.

In our own company, we are currently using Java, Python, Ruby, C++ and PHP — and this is all within the sphere of one products ecosystem. We generally only recruit for Java/C++ developers since that is our primary area of focues, but I make it a point to ask about other languages during our hiring process and hope to spread that around to the rest of the team.

stephan

@Thomas: “polyglot programming is the name of the game these days”

After some bad experiences, I’m not a proponent of polyglot anymore.It does not scale, with the slightest developer turnover you end up with noone understanding that Clojure code.

poko

Hi Stephan,

nice post! I am just surprised you did not mention typing differences as pluses/minuses. I am guessing that for many that’s the real deal breaker (either way)

I don’t buy it. Your main argument for why Clojure has better Java integration than Scala is the fact that Clojure’s collections all implement interfaces. Scala’s do too!

public int sumSeq(scala.Seq<Int> s) {
int sum = 0;
for (int i = 0; i < s.length(); i++) {
sum += s.apply(i);
}
return i;
}

Scala functions are also interfaces (no coercion necessary):

public <T> void foreach(scala.Seq<T> s, Function1<T, ?> f) {
s.foreach(f);
}

Additionally, your one example of using Java methods within Clojure didn’t actually have any Java methods whatsoever. That was all pure Clojure. A better example might be something like this:

(defn foreach [s f]
(.foreach s (f)))

Finally, you’re forgetting a *very* important aspect of Java integration: generating JVM classes and interfaces. Clojure’s integration with Java is very good, but the syntax to create a class is foreign and extremely unintuitive (doesn’t fit with the rest of the language at all). With Scala, creating a JVM class is as easy as:

class Foo { … }

All Scala classes are Java classes. All Scala traits are Java interfaces. This level of integration is impossible to overestimate. It means that you don’t need special magic to do things like extend Scala classes in Java, or implement Java interfaces in Scala. It all works together, seamlessly.

The one point of integration pain that I will give you is the fact that Scala’s collections are not in the same hierarchy as Java’s collections. Seeing as Java’s collections library is inherently broken though, I would consider that to be a “good thing” overall. It does mean that conversions are required whenever passing a Scala Map to a method expecting a Java Map, but those conversions are not difficult to create (they’re coming in Scala 2.8, and Jorge Ortiz has a very nice library which provides them now).

As a side note, two of the advantages you listed for Clojure over Scala (STM and clever collections) are going to be rectified in upcoming Scala releases. Believe it or not, Rich Hickey didn’t actually design Clojure’s collections completely from scratch, he adapted them from some work done by Phil Bagwell (he doesn’t hide this fact). Phil Bagwell just happens to work at EPFL; and yes, he is working on Scala’s collections library.

There are legitimate reasons to prefer Clojure over Scala. It’s much more concise, and the simple elegance of the language is very alluring. However, your arguments are unpersuasive.

stephan

@Daniel:

“All Scala classes are Java classes. All Scala traits are Java interfaces.”

Yes, I did say “One can implement Java interfaces in Java, extend Java classes and vise versa.”

But as someone who is using Scala code from inside Java, “From the Java side things also do not look as nice, Scala classes and traits have lots of ugly named methods”

Perhaps you’re mainly using Scala from Scala and Java from Scala, so this might not apply to you.

About “As a side note, two of the advantages you listed for Clojure over Scala (STM and clever collections) are going to be rectified in upcoming Scala releases.” does differ how from “Scala promises Clojure like Collection integration with Java in the future – we’ll see.” (STM becoming part of Scala).

Daniel, I value your opinion very highly, but it looks like you have only scanned the post.

Shawn

Since you mentioned it for Scala, I’d like to point out that you can also implement Java interfaces in Clojure (proxy) and generate named classes consumable from Java (genclass).

@stephan

I have now re-read the article, and even though I caught a few more things (in retrospect, I did read everything but the conclusion fairly thoroughly the first time), I think I still would have posted the same comment as before. Consider the following excerpts:

> Scala has good, but compared to Clojure
> a rather basic [Java] integration.

> Scala isn’t tightly integrated on the
> API side – only with some in this
> context clumsy, unneeded Meta-Programming
> with impliciets. Scala promises Clojure
> like Collection integration with Java
> in the future – we’ll see.

In this context, I thought (and still think) that you were referring to the conversions between Scala and Java collections (currently in scala.collection.jcl). I agree(d) with you that this has been and will always be a sore point. My comment about Scala getting better collections in future was in reference to this:

> Some obvious reasons that speak for
> Clojure:
>
> …
> * STM, software transactional memory,
> an easy way to share data
> * Very clever immutable datastructures

The “very clever immutable data structures” point is listed as an advantage for Clojure. I was simply pointing out that advantage is going to be matched, if not superseded by Scala 2.8. Martin Odersky has stated that he intends Scala to have the fastest persistent collections of any JVM language.

> But as someone who is using Scala code
> from inside Java, “From the Java side
> things also do not look as nice, Scala
> classes and traits have lots of ugly
> named methods”

This comes out of the fact that Scala has very different idioms than Java. Symbolic method names, name/name_= vs get/set, etc. Scala also has some language features which don’t map nicely into Java (traits with implementations, singleton objects, etc). The point is that I don’t see how Clojure is any better in this respect. The only difference with Clojure is that you have to define the mapping into Java *explicitly*. It’s such a foreign syntax to create a class that you are almost forced to construct the API in a more Java-idiomatic fashion. You’re perfectly free to do this in Scala as well (keep your traits free of method implementations, use get/set instead of name/name_=, etc), the difference is that you don’t really feel the need most of the time.

I can see how Groovy has better Java integration, since its idioms are drawn directly from Java and its features map nicely into that language, but I just don’t understand the claim that *Clojure* has better Java integration than Scala.

Cedric

Hey Stephan,

A small request regarding your blog: do you think you could stop posting Twitter mentions in your comments? (or maybe have a separate section just for Tweets?)

I find value in reading both your posts and the comments that follow, but with all the Twitter mentions automatically posted as comments, it’s very painful to find what the real comments are…

Just a thought.

Tom

In 2009 I run into many ‘Java’ programmers that don’t know about Groovy. I therefore am sceptical, like you, about Clojure with it’s lisp syntax gaining much traction with the general developer crowd.

Andrew Baine

Correction: in clojure, everything is an object. You can see what type of object with function type:
user> (type 1)
java.lang.Integer
user> (type (range 100))
clojure.lang.Range
user> (type (make-array Integer 10))
[Ljava.lang.Integer;
user> (type #{1 2 3})
clojure.lang.PersistentHashSet
user> (type [1 2 3])
clojure.lang.LazilyPersistentVector
user> (type nil)
nil

It seems that you overlooked the power of clojures macro expansion system. The lack of user-defined reader macros sort of sucks (But makes sense for portability/readability) but the power of macros in general is insanely vast for extending the language in a direction that best suits your specific niche.

My experience with Clojure has been really neat – I feel evolved (or rather liberated).

One good approach may be to code the reusable core / generic (framework-like) stuff in Java, so that it can be easily used in any JVM-language. And the specific parts can be coded in any JVM-language you feel most productive with.

An example framework is here: http://bitbucket.org/kumarshantanu/jettify/

Just to show how easily Clojure integrates with Java frameworks (Hibernate and StringTemplate) source code for a tiny personal blog app is here: http://bitbucket.org/kumarshantanu/blogjure/

Rich

An interesting read. The momentum for Scala is evident enough – think it was recently quoted that something like 3 of the top best selling books at the last “Java symposium” were Scala related. I managed to get through “Programming in Scala” by Odersky – very well presented book btw. It’s a decent, terse language with some good, OO and functional programming capabilities. Couple of gripes from me though

1)definitely suffers from some warts due to having to cope with the Java heritage side of things.

2)IMHO, Python remains the best language I have ever come across syntactically in terms of being “easy to understand, intuitive, powerful and pragmatic”. I was somewhat disappointed just how much more work it was to get up to speed with Scala. Won’t get into the typed argument etc – but rest assured if you have only a little time to get another language under your belt then i’d recommend Python – Java and Python make a powerful punch combination for developers in the field.

Jython nut

Tom wrote: “In 2009 I run into many ‘Java’ programmers that don’t know about Groovy.”

Perhaps they’re still using Jython, which was released 12 years ago. It hasn’t advanced much, but it’s still good enough for scripty things. They can even put “Python” on their CV’s.

bob me

Haha Stephen!

Now ur supporting Scala !!! Your previous post supported Clojure… !?

See with time opinions change !!!

I like people who have double life, mind and character.

Cheers,
Bob Me

stephan

@bob me: Hello bob, should this be your name. Thanks for reading more than one post of this blog.

“Your previous post supported Clojure… !?”

I do not support either, but share my opinions of both. But I’m mystified how you came to that conlusion as I did write:

“I think the object oriented features of Scala make the language more usable for real world applications.”

Everybody needs to decide for himself what language to chose. I chose to use one, I do not support one :-)

ADeveloper

“avandgarde” => “avant-garde”.

“cirlces” => “circles”.

Thanks.

stephan

@A developer: Thanks, fixed.

Cheers
Another developer

mario

Clojure being Lisp-like is an obstacle for most developers. I remember Lisp in college and I can honestly say it is the one of the few languages whose syntax did not come easily to me. C, C++, Java, Javascript, C#, Ruby all are easy to pick up. I put my money on Scala between these two languages.

Ittay

One minor quible about the Foo example where the class in Scala is shorter. This is not so much a language feature as a built-in compiler plugin. See http://projectlombok.org/index.html for how this can be done in java. The java code is still longer, but not as much

Base

Thanks for this post. I really appreciate how you didn’t try to pull off the X is better than Y thing. It is refreshing.

I have fiddled with both and think that both have their advantages and disadvantages (as do all things).

I would like to add my 2 cents on this one point:

“I do not buy the argument that Lisp is so much more powerful than e.g. Scala – so this doesn’t influence me much.”

Lisp(s) (including Clojure) have some things going for them that most other languages do not have.

Lisps are incredibly expressive languages. You can do so much with so little it is amazing. This is more true IMHO than in Scala, though Scala is substantially better than Java (setting the bar low, I know…)

Also, the macro system is simply amazing. To me that is the deal breaker. It extends the power of the language in ways that you simply cannot do in other languages.

Finally, it took me a while to fully understand this one aspect, but when I came around it really hit me like a ton of bricks. The homoiconicity of lisps makes for designing certain types of programs much easier. I am starting to dabble in some genetic programming and I have to say that I cannot even really understand how one could do this in a non-lisp (or at least non-homo iconic) language. To think that some people did this in C!!! Holy Toledo!

The more I read about Haskell the more I am interested, though it seems like a nightmare to learn. However I am consistently amazed how much people can do in so few lines of code. Maybe a Haskell implementation on the JVM is next???

While I am really impressed with Scala and love some things about it (patter matching!!) I have to say that programming in Clojure is the most fun I have had hacking away in front of a computer. I am starting to get to the point where I am realizing the productivity gains of these languages.

Life is good!

Leave a Reply

What people wrote somewhere else:

Wrote a new blog post: RT @codemonkeyism “Clojure vs Scala, Part 2″ http://bit.ly/4aGcI

This comment was originally posted on Twitter

Hope to get some feedback to my #Scala and #Clojure blog post http://bit.ly/4aGcI to get my own view and opinion clearer

This comment was originally posted on Twitter

RT @codemonkeyism: Hope to get some feedback to my #Scala and #Clojure blog post http://bit.ly/4aGcI to get my own view and opinion clearer

This comment was originally posted on Twitter

Reddit/p: Clojure vs Scala, Part 2 http://bit.ly/zB3Yo

This comment was originally posted on Twitter

RT @codemonkeyism: Wrote a new blog post: RT @codemonkeyism “Clojure vs Scala, Part 2″ http://bit.ly/4aGcI

This comment was originally posted on Twitter

Can we apply what we are doing with Rails to our longtem J2EE development? this read will help “Clojure vs Scala” http://bit.ly/JubFD

This comment was originally posted on Twitter

#Scala vs #Clojure blog post by @codemonkeyism: http://bit.ly/4aGcI | I predict #scala will win because of the syntax;curly braces rule :]

This comment was originally posted on Twitter

Clojure vs Scala Part 2 http://bit.ly/JubFD

This comment was originally posted on Twitter

Good read. RT @jboner: RT @codemonkeyism: Wrote a new blog post: RT @codemonkeyism “Clojure vs Scala, Part 2″ http://bit.ly/4aGcI

This comment was originally posted on Twitter

RT @codemonkeyism “Clojure vs Scala, Part 2″ http://bit.ly/4aGcI (via @jboner)

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-74KCH

This comment was originally posted on Twitter

My response to @codemonkeyism’s post on Clojure vs Scala: http://bit.ly/e24u9

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 http://ff.im/-74QXd

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-74QX8

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-74QXb

This comment was originally posted on Twitter

very concise article: RT @bubbl_scala: Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-74QXb

This comment was originally posted on Twitter

Flightcaster mentioned in #clojure vs. #scala post: http://bit.ly/vxX6A

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 #programming http://bit.ly/t40r4

This comment was originally posted on Twitter

Read: “Clojure vs Scala, Part 2 | Code Monkeyism” http://is.gd/2wtyC

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-753HD

This comment was originally posted on Twitter

RT @programmingjoy: Clojure vs Scala, Part 2 #programming http://bit.ly/t40r4

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://bit.ly/vxX6A
scala makes me feel fun.

This comment was originally posted on Twitter

@DavidPlumpton Clojure vs Scala, Part 2 #programming http://bit.ly/t40r4 – thanks for the link to this, good article…will try some clojure

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-762jm

This comment was originally posted on Twitter

[Twitter*feed] Clojure vs Scala, Part 2 | Code Monkeyism http://bit.ly/jpKez

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-76THU

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://tinyurl.com/kuwk85 via http://www.diigo.com/~atreyu_bbb

This comment was originally posted on Twitter

RT @codemonkeyism Wrote a new blog post: RT @codemonkeyism Clojure vs Scala, Part 2 http://bit.ly/4aGcI (another interesing comparison)

This comment was originally posted on Twitter

Buen articulo de Scala y Clojure
http://bit.ly/vxX6A

This comment was originally posted on Twitter

http://bit.ly/8ctNi Clojure vs Scala, nice article, more language fight, i m really considering to learn a new language.

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-7cbWQ

This comment was originally posted on Twitter

Clojure vs Scala http://bit.ly/vxX6A

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-7i5ad

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-7i5ah

This comment was originally posted on Twitter

RT @codemonkeyism Clojure vs Scala, Part 2 | Code Monkeyism http://bit.ly/4aGcI

This comment was originally posted on Twitter

Clojure vs. Scala – nice writeup by @codemonkeyism http://is.gd/2GKng

This comment was originally posted on Twitter

Clojure vs. Scala – nice writeup by @codemonkeyism http://is.gd/2GKng

This comment was originally posted on Twitter

HackerChick #Clojure vs. #Scala – nice writeup by @codemonkeyism http://is.gd/2GKng

This comment was originally posted on Twitter

HackerChick #Clojure vs. #Scala – nice writeup by @codemonkeyism http://is.gd/2GKng

This comment was originally posted on Twitter

RT @HackerChick: Clojure vs. Scala – nice writeup by @codemonkeyism http://is.gd/2GKng

This comment was originally posted on Twitter

RT @HackerChick: Clojure vs. Scala – nice writeup by @codemonkeyism http://is.gd/2GKng

This comment was originally posted on Twitter

Clojure vs scala (and bit Scala versus Java) http://bit.ly/vxX6A

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-7pldG

This comment was originally posted on Twitter

Clojure vs Scala, Part 2 | Code Monkeyism http://ff.im/-7pqeN

This comment was originally posted on Twitter

fav: Clojure vs Scala, Part 2 | Code Monkeyism : http://bit.ly/vxX6A

This comment was originally posted on Twitter

Additional comments powered by BackType