Demian L. Neidetcher

Martin Odersky suggested different levels of Scala adoption and learning. This is an attempt to go through all those levels.

Level A1: Beginning application programmer

Java-like statements and expressions:

standard operators

method calls

conditionals

loops

try/catch

class

object

def

val

var

import

package

Infix notation for method calls

Simple closures

Collections with

map

filter

etc

for-expressions

Level A2: Intermediate application programmer

Pattern matching

Trait composition

Recursion, in particular tail recursion

XML literals

Level A3: Expert application programmer

Folds, i.e. methods such as foldLeft, foldRight

Streams and other lazy data structures

Actors

Combinator parsers

Level L1: Junior library designer

Type parameters

Traits

Lazy vals

Control abstraction, currying

By-name parameters

Level L2: Senior library designer

link

Level L3: Expert library designer

Early initializers

Abstract types

Implicit definitions

Higher###kinded types