return type best practices type inference
sealed class
higher-order functions functions currying
return type return statement NonLocalReturnException syntax
infix notation arity-1
functions recursion
sealed class match expression pattern matching
val def by-value by-name definitions
parameters functions
variables equals case-classes hashCode best practices