This is an old revision of the document!
Scala @ PP
1. Installation
2. Syntax
2.1. Writing functions 2.2. Function evaluation (order of parameters in function call matters !)
- using the
⇒to delay evaluation 
2.3. Conditionals
def f(x : Int) = if (x >= 0) x else -x- boolean expressions (
true,false,!b,&&,||) - the “by value” definition using
val - example using def and val against a loop
 
Newton square root estimation
 * Blocks - expressions in Scala 
 * visibility of variables in blocks
 * local scoping (similar to let)
 * semicolons (optional)
 * tail recursion in Scala (only direct recursive calls are optimised @tailrec)
 * function types (f : Int ⇒ Int)
 * anonymous functions ((x: Int, y: Int) ⇒ x + y,  x ⇒ x+x)
 * currying (def f(x: Int, y: Int)(z: Int):Int = x+y+z)
 * higher-order functions (mapReduce implementation)
* classes and methods
class Rational(x: Int, y: Int) { // creates a Type as well as a constructor for the new type def a = x def b = y } val r = new Rational(1,2)
 * toString and @override