The Scala Programming Language
Seamless Java Interop
So the type system doesn’t feel so static. Don’t work for the type system. Let the type system work for you!
Concurrency & Distribution
Use data-parallel operations on collections, use actors for concurrency and distribution, or futures for asynchronous programming.
Combine the flexibility of Java-style interfaces with the power of classes. Think principled multiple-inheritance.
Think “switch” on steroids. Match against class hierarchies, sequences, and more.
Functions are first-class objects. Compose them with guaranteed type safety. Use them anywhere, pass them to anything.