Bonus: The Mindset of a Functional Programmer (Scala 3 Video)
I started this book by saying that it has an audacious goal: to demonstrate to OOP developers the benefits of:
- Immutable variables (algebraic variables)
- Immutable data structures
- Pure functions
- Expression-oriented programming
- Functional error handling
As I went along in creating the examples, you also saw the additional benefits of declaring data types: that they make the signatures of pure functions incredibly meaningful.
After we finished the To-Do List example and switched some of that code from using Try
to using Either
, I then showed how this gets you ready to use the “IO” types in the ZIO and Cats Effect libraries.
The mindset of an FPer
As you dig into ZIO and Cats Effect, remember a few things:
- The biggest thing is that FPers think of ourselves as mathematicians or architects, writing algebraic code or creating blueprints.
- Terms like equations and blueprints imply that the description of our code is separate from the execution of the code. (As I mentioned, FPers don’t like
Future
because it begins running immediately.) - Writing FP code is all about immutable variables, immutable data structures, pure functions, with data types and functional error handling that tells readers exactly what’s going on — all of which you’ve seen in this book.
- Side effects mess up our equations and blueprints, so we don’t allow them. Instead we handle them with types like
Option
,Try
, andEither
— and when we really get into FP we use the more industrial-strengthIO
andZIO
types. - I mentioned that you can’t mix types like
Option
,Try
, andEither
insidefor
expressions, so that’s one reason a type likeZIO
has so many capabilities: whatever yourZIO
s do individually, you can combine them all together, as desired.
These are the ways that FPers think about their code. If you understand the reasoning and desires behind this mindset, you can understand FP.
Update: All of my new videos are now on
LearnScala.dev