Adding Traits to (Statically Typed) Languages
an overview of the scala programming language .