Training program from beginner to expert level
An expected table of content will edit in future as and when I add more code/exercises/tutorials
- Environment setup
- FP introduction
- ADT (algebraic data types) to manage state
- Type vs values
- Data Types
- Case classes, trait, and object.
- Smart constructors
- Domain modeling using ADT
- Pattern matching
- Functions in scala (methods, functions and eta reduction) to add behaviours
- Function curry
- Partial application
- Partial functions
- Higher order functions
- Combinators
- Function composition
- Pure functions
- Function as data
- Recursion in functions
- Writing Lazy evaluated code
- Type level and Type system basics
- Variance
- Phantom Types
- Existential Types
- Type lambda and kind projector
- GADT
- Data structures in scala (collections)
- List
- Vectors
- Folding on List
- Amortized analysis of algorithm an intro
- Scala with cats
- Type classes
- Monoids and semigroups
- Functors
- Monads
- Monad Transformers
- Semigroupal and applicative
- Foldable and Traverse
- Effect system and more
- Concurrency basics and Future in scala.
- Intro to cats effects IO
- Will add more topics here as we are still learning and using it I projects like MVars, ref and concurrency from cats effects
- Concurrency with green threads
- Best practices for thread pools in production application (JVM)
- Tagless Initial, sample project
- Tagless Final, sample project
- Stream processing using FS2
- Stream basics
- Concurrency primitives by FS2