1. functions
    1. key word
      1. def
    2. types
      1. high-order
        1. another function
          1. as
          2. argument
          3. result
      2. predicate
        1. maps
          1. element
          2. to
          3. boolean
        2. example
          1. def filter(p: T => Boolean): Array[T]
      3. partially applied
        1. value >
          1. function
          2. takes
          3. x
          4. returns
          5. value > x
        2. equivalent
          1. x => pivot > x.
      4. procedure
        1. return
          1. Unit
      5. without arguments
        1. definition
        2. call
        3. ()
    3. return
      1. no explicit
        1. key word
          1. return
      2. if return
        1. need
          1. =
          2. before
          3. body
    4. overriding
      1. override
        1. explicitly
    5. parameters
      1. x: => Type
        1. passed
          1. unevaluted
  2. identifiers
    1. no difference
      1. operator
      2. identifier
    2. can be
      1. sequence
        1. letters
        2. digits
        3. begin
          1. letter
      2. special
        1. char
          1. *
          2. +
          3. -
          4. :
          5. ...
    3. infix operator
      1. E op E`
        1. =
          1. E.op(E`)
  3. Types
    1. Unit
      1. void
  4. declarations
    1. object
      1. singleton object
        1. class
        2. instance
      2. no static
        1. members
    2. class
      1. parameters
        1. primary constructor
      2. all
        1. super class
          1. scala.AnyRef
      3. case
        1. new
          1. not mandatory
        2. generated
          1. getters
          2. for
          3. constructor
          4. parameters
          5. equals/hashcode
          6. structure based
          7. toString
        3. instances
          1. decomposed
          2. pattern matching
      4. field definition
        1. var x: T
          1. generates
          2. getter
          3. def x: T
          4. setter
          5. def x_= (newval: T ): unit
          6. properties
          7. possible to define
    3. var
      1. variable
        1. value
          1. default
          2. _
    4. val
      1. constant
  5. java
    1. imports
      1. java.lang
        1. default
      2. same package
        1. multiple
          1. classes
          2. import java.util.{Date, Locale}
          3. import java.text._
  6. Genericity
    1. syntax
      1. [T]
  7. Arrays
    1. syntax
      1. Array[T]
      2. get element
        1. arr(i)
  8. Classes
    1. scala.Any
      1. value classes
        1. scala.AnyVal
          1. scala.Nothing
      2. reference classes
        1. scala.AnyRef
          1. scala.Null
          2. java.lang.Object
        2. equalty
          1. reference
          2. AnyRef#eq()
          3. java
          4. ==
          5. natural
          6. ==
          7. overloaded
          8. Object#equals()