Learning Scala

This is a collection of Scala resources on the web that helped me on my quest to learn Scala.

Functional Scala series

This is a briljant series on functional Scala by Mario Gleichmann. It is a must read if you are new to Scala and want to gain a quick understanding of the functional aspects of Scala. Well written, funny, concise and very informative. Well worth your time!

  1. Introduction
  2. Functions
  3. Functions as Objects as Functions
  4. Closures
  5. Comprehending Comprehensions
  6. High, Higher, Higher Order Functions
  7. Lambdas and other shortcuts
  8. Turning Methods into Functions (or WTF is eta expansion?)
  9. Polymorphic Functions ?!?
  10. Algebraic Datatypes – Enumerated Types
  11. Algebraic Datatypes – Sum and Product Types
  12. Algebraic Datatypes – ‘Sum of Products’ Types
  13. Pattern Matching – the basics
  14. Combinatoric Pattern Matching
  15. Pattern Matching on product types
  16. Example: A little expression language with algebraic datatypes and pattern matching
  17. Example Cont.: Expressions, Extensions and Extractors
  18. Tinkerbell, Frogs and Lists
  19. List sugarization
  20. Essential list functions
  21. Quiz with Lists – common list functions, handcraftet

Functional Programming in Scala

This is a four part post that focusses on the the core concepts of functional programming in Scala. Great as a refresher or to get a quick overview before digging dieper. Maybe not for the novice.

  1. Functional Programming in Scala – Part 1: Core Concepts
  2. Functional Programming in Scala – Part 2: Partial Functions and Currying
  3. Functional Programming in Scala – Part 3: Pattern Matching
  4. Functional Programming in Scala – Part 4: Evaluation Strategy

Cheatsheets

  1. A quick reference of Scala syntactic constructions
  2. Java developers Scala cheatsheet
  3. scala.Option Cheat Sheet
  4. Scala quick reference

Websites

  1. Daily Scala: A short daily dose of scala examples and occasionally explanations.

Leave a Reply

Your email address will not be published. Required fields are marked *