Taking Scala to the Next Level

Miles Sabin's Advanced Scala Development

Miles Sabin's Advanced Scala Development
Event: Miles Sabin's Advanced Scala Development
Location: The Skills Matter eXchange
Date: 07.03.2011 - 08.03.2011
Contact: Website
Venue: The Skills Matter eXchange
EC1V 7DP London |

Miles Sabin's two day Advanced Scala Development course is aimed at developers who have mastered the essentials of core Scala and want to take their understanding of the language and its compiler to the next level. It covers Scala's powerful type system in depth with concrete illustrations of practical applications of it's more advanced features. The course also introduces the Scala compiler's plug-in architecture and shows how it can be used to support tools and extends the language.


In this course you will gain a deep understanding of the Scala programming language allowing you to make full use of its power.
You will:

  • Gain a comprehensive understanding of Scala's powerful type system, how it's used in advanced libraries such as Scalaz, and how compile-time type-level computation can be put to practical use.
  • Learn the inner workings of the Scala 2.8 collections framework, how to extend it and how to apply the techniques it employs in your own designs.
  • Take away knowledge of how and when to use Scala compiler plugins to instrument and transform Scala code and how to extend Scala's type system in domain-specific ways.
  • Learn what delimited continuations are, how they are implemented in Scala and how they can be applied to real world problems.


Day 1

A deep dive into the Scala type system

  • Abstract types revisited
  • Path dependent types
  • Family polymorphism
  • Traits and self-types
  • The Cake pattern and the Bakery of Doom
  • Higher-kinded and structural types
  • Encoding existentials, virtual classes, higher-rank and ad hoc polymorphism
  • Workshop and review

Extending the collections framework

  • A review of the collections framework
  • The role of higher-kinded types and ad hoc polymorphism
  • Builders
  • Working with Arrays and Strings
  • Crafting a new collection
  • Workshop and review

An introduction to scalaz

  • Haskell origins
  • A selection of typeclasses
  • scalaz encodings
  • Ad hoc polymorphism vs. subtyping
  • Interop with the Scala standard library
  • Workshop and review

Day 2
Writing compiler plug-ins

  • Compiler phases
  • The scalac AST
  • Plug-ins to instrument Scala source
  • Plug-ins to augment behaviour
  • Plug-ins to extend the type system
  • Workshop and review


  • Varieties of continuation
  • shift/reset in Scala
  • Type-safe printf
  • Automatic resource management
  • Coroutines
  • Generators
  • Goto in Scala
  • Workshop and review

Type-level computation

  • Church numerals and Peano arithmetic
  • Encoding the SKI calculus
  • Heterogenous lists
  • Type lists
  • Comparison with C++ template metaprogramming, Agda and Template Haskell
  • Workshop and review
JAX Magazine - 2014 - 06 Exclucively for iPad users JAX Magazine on Android


Latest opinions