better support for functional programming: • Immutability: val for variables and properties, immutable data classes, copy() • Expressions: Single expression functions. if, when and try-catch are expressions. We can combine these control structures with other expressions concisely. • Function Types • Concise Lambda Expressions • Kotlin’s Collection API These features allow writing functional code in a safe, concise and expressive way. Consequently, we can create pure functions (functions without side-effects) more easily. https://blog.philipphauer.de/idiomatic-kotlin-best-practices/