It's very elegant. The type system and multiple dispatch are a little bit tricky to wrap your head around if you're coming from an OO language - and especially if you're coming from a duck-typed, monkey patching, OO language. But once you get it, it's actually simpler, and makes way more sense, and there are real performance advantages.