Pretty much. I'm sure that this new concepts thing is an improvement over whatever they have; but when I compare it to the equivalent in Haskell I almost want to cry. The way they do it in Haskell seems so much cleaner and less of an after thought.
Any type simply declares that it implements Ord, or Show, or whatever you need, and then functions can declare that they require a type to implement that.
Of course Haskell has it's own problems with error messages not being entirely useful and code being slow as shit if you don't know exactly how to optimize.