The objective of the workshop is to get some theoretical and practical overview of the functional approach to IO-based programming. You will learn how to program a real applications using Scala, Cats, Cats Effect, Cats MTL, Meow MTL and others. Throughout the day we will switch between quick introductions of the core features and longer step-by-step exercises. This will expose you to all features and tools needed to create and maintain production applications.
- Using
IO
. - Handling errors (
Option
/Either
/EitherT
/ApplicativeError
/FunctorRaise
/MonadError
) - Handling State (
StateT
/MonadState
). - Tagless final & the MTL style.
Either
s in the business logic.- Using mutable reference (
Ref
). - Doing things concurrently (
Concurrent
/Fiber
). - Purely functional waiting for values (
Deferred
).
- Experience developing Scala applications.
- Understanding of some fundamental FP concepts: immutability, pure functions, higher order functions, typeclasses.
Before launching the application you need to generate csv
files. Please run generate_movie_data.sh script first. Then run the app by executing sbt run
.
We are going to implement "Movie: Hot Or Not?" application which is a comparison-based rating system. The sample output of the application:
> The Transporter (a) or The Missing Person (b) or ? (q to quit)
You chose The Transporter
> The Transporter (a) or Malcolm X (b) or ? (q to quit)
a
You chose The Transporter
> The Transporter (a) or The Jungle Book 2 (b) or ? (q to quit)
?
You chose nothing
> The Transporter (a) or The Matrix (b) or ? (q to quit)
b
You chose The Matrix
This project uses data from IMDB 5000 Movie Dataset.