Overview
This course is the continuation of the “Functional Programming Fundamentals with Scala and Cats” course and explores more advanced techniques in functional programming using Scala and Cats.
Prerequisites
Over a year of experience in Scala or any other functional programming language.
What you'll learn
The first section of this course covers the core concepts of Functional Programming:
- Typeclasses
- Higher-Order Functions
- Currying and partial application
- Referential Transparency
- Lazy Evaluation
- Recursion
We’ll review main type classes from the Cats library:
- Monoid
- Semigroup
- Functor
- Applicative
- Monad
Then, we’ll learn some advanced topics in regards to cats and cats-effect like:
- Optics
- Free Algebras
- Effects and some of the related data types and typeclasses like IO, SyncIO, Fiber, Resource, Clock ContextShift, Timer, Bracket, Effect, ConcurrentEffect, etc.
- Concurrency and Parallelism: Deferred, MVar, Ref, Semaphore.
Finally, we’ll apply all of the concepts covered above in real domains, like:
- Asynchronous computations
- Database persistence
- HTTP communications.
- Streaming