Skip to content

Instantly share code, notes, and snippets.

@Bunyod
Forked from razie/scalaskilset.markdown
Created December 12, 2016 07:27
Show Gist options
  • Save Bunyod/f14a972c4ae6436d528103396cf997dc to your computer and use it in GitHub Desktop.
Save Bunyod/f14a972c4ae6436d528103396cf997dc to your computer and use it in GitHub Desktop.
Scala skill levels

Proposed levels of skill for the scala programming language, can be used as a base for a curriculum

Related links:

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
  • Streams
  • Actors
  • Combinator parsers

Level L1: Junior library designer

  • Type parameters
  • Traits
  • Lazy vals
  • Control abstraction, currying
  • By-name parameters

Level L2: Senior library designer

  • Variance annotations
  • Existential types (to interface with Java wildcards)
  • Abstract types
  • Self types
  • Structural types
  • Extractors

Level L3: Expert library designer

  • Early initializers
  • Implicit definitions
  • Higher-kinded types
  • Defining map/flatmap/withFilter for new kinds of for-expressions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment