Educational material to learn functional programming in Scala, from scratch, in a structured and comprehensive way.
This is work in progress, only few chapters are available!
Website: https://colofabrix.github.io/the-road-to-fp/
The original scratchpad with my notes for this website.
Solved exercises of the chapters.
Summary of functional patterns
Chapter 0: Introduction - Exercises: solutions
Chapter 1: A different way of thinking - Exercises: solutions
Chapter 2: A quick tour of the Scala object keyword - Exercises: solutions
Chapter 3: Scala language feature: Case classes - Exercises: solutions
Chapter 4: Pure functions and referential transparency - Exercises: solutions
Chapter 5: Composition - Exercises: solutions
Chapter 6: Scala language feature: Lazyness - Empty
Chapter 7: Advanced function concepts - Exercises: solutions - In progress
Chapter 8: Recursion - Empty
Chapter 9: Purely functional data structures - Empty
Chapter 10: Scala language feature: Higher order functions - Empty
Chapter 11: Ad-hoc polymorphism: Typeclasses - Empty
Chapter 12: Functors and the world of containers - Empty
Chapter 13: Monoids - Empty
Chapter 14: Applicative functors - Empty
Chapter 15: Optics - Empty
Chapter 16: Introducing monads - Empty
Chapter 17: Most common monads - Empty
Chapter 18: Functional error handling - Empty
Chapter 19: Monad transformers - Empty
Chapter 20: Free applicatives and free monads - Empty
Chapter 21: Comonads - Empty
Chapter 22: Introduction to Category Theory - Empty
Chapter 23: Basic concepts of Category Theory - Empty
Chapter 24: Revisiting structures and tools using Category Theory - Empty
Chapter 25: Few concepts in Type theory - Empty
Chapter 26: Type Level Programming - Empty
Scala developer since 2014 and passionate about functional programming, former dev-ops and sysadmin engineer, I love brewing and discovering beer around the world and I compete in 4-way team formation skydiving.
Creative Commons Attribution 4.0 International License
Issues, feature requests, ideas, suggestions, etc. are appreciated and can be posted in the Issues section.
Pull requests are also very welcome. Please create a topic branch for your proposed changes. If you don't, this will create conflicts in your fork after the merge.