Source: https://www.scala-lang.org/docu/files/ScalaTour-1.5.pdf