
Premium
Title Page
1/2/2026
Copyright Page
1/2/2026
Dedication Page
1/2/2026
About the Author
1/2/2026
About the Reviewers
1/2/2026
Acknowledgement
1/2/2026
Preface
1/2/2026
Table of Contents
1/2/2026
1. Fundamentals of Functional Programming
1/2/2026
Introduction
1/2/2026
Structure
1/2/2026
Objectives
1/2/2026
Functional programming
1/2/2026
Programming paradigm
1/2/2026
Applying and composing functions
1/2/2026
Declarative programming
1/2/2026
Trees of expression
1/2/2026
Map values
1/2/2026
Sequence of imperative statements
1/2/2026
Update running state of program
1/2/2026
Function as first-class citizen
1/2/2026
Function as literal
1/2/2026
Function as input parameters
1/2/2026
Function as return value
1/2/2026
Functions stored in data structures
1/2/2026
Pure function
1/2/2026
Referential transparency
1/2/2026
Immutability
1/2/2026
Lazy evaluation
1/2/2026
Optimization
1/2/2026
User defined control structures
1/2/2026
Infinite data structures
1/2/2026
Function composition
1/2/2026
Higher order function
1/2/2026
Statements versus expressions
1/2/2026
Advantages and usage of functional programming
1/2/2026
Unit testing
1/2/2026
Concurrency
1/2/2026
Debugging
1/2/2026
Easier to reason about
1/2/2026
Difference between functional and object-oriented approach
1/2/2026
Conclusion
1/2/2026
2. Implementation of Category Theory
1/2/2026
Introduction to category theory
1/2/2026
Category
1/2/2026
Properties
1/2/2026
Laws
1/2/2026
Morphism
1/2/2026
Common types of morphisms
1/2/2026
Composition of morphisms
1/2/2026
Identity morphisms
1/2/2026
Sets
1/2/2026
Usage
1/2/2026
Semigroups
1/2/2026
Definition
1/2/2026
Monoid
1/2/2026
Functors
1/2/2026
Applicative functor
1/2/2026
Foldable
1/2/2026
Traversal
1/2/2026
Monad
1/2/2026
Reader monad
1/2/2026
Writer monad
1/2/2026
State monad
1/2/2026
Optics
1/2/2026
3. Introduction to Scala
1/2/2026
Scala
1/2/2026
Scala as object-oriented
1/2/2026
Scala as functional
1/2/2026
Scala as statically typed
1/2/2026
Scala as extensible
1/2/2026
Scala interoperates with Java
1/2/2026
Hands-on Scala
1/2/2026
Scala installation
1/2/2026
Scala IDE
1/2/2026
Scala for functional programming
1/2/2026
Function as first-class values
1/2/2026
Function returned as output
1/2/2026
Lambda functions
1/2/2026
Closures
1/2/2026
Currying
1/2/2026
Partial applied function
1/2/2026
Function implementation
1/2/2026
Option[T]
1/2/2026
Try[T]
1/2/2026
Either [+A, +B]
1/2/2026
4. Understanding Cats
1/2/2026
Understanding Cats
1/2/2026
Type classes
1/2/2026
Functor
1/2/2026
Invariant
1/2/2026
Invariant usage
1/2/2026
InvariantMonoidal
1/2/2026
Contravariant
1/2/2026
Contravariant usage
1/2/2026
Bifunctor
1/2/2026
Applicative
1/2/2026
Bifoldable
1/2/2026
Arrow
1/2/2026
Semigroup
1/2/2026
SemigroupK
1/2/2026
MonoidK
1/2/2026
Traverse
1/2/2026
Non-empty traverse
1/2/2026
Alternative
1/2/2026
Comonad
1/2/2026
Bimonad
1/2/2026
Eq
1/2/2026
Show
1/2/2026
Parallel
1/2/2026
Reducible
1/2/2026
Data types
1/2/2026
Transformers
1/2/2026
Free implementations
1/2/2026
Cats testing
1/2/2026
5. Understanding ZIO
1/2/2026
Introduction to ZIO
1/2/2026
ZIO type aliases
1/2/2026
UIO[A]
1/2/2026
URIO[R, A]
1/2/2026
Task[A]
1/2/2026
RIO[R, A]
1/2/2026
IO[E, A]
1/2/2026
ZIO control flow
1/2/2026
ZIO Conditional flow
1/2/2026
When expression
1/2/2026
Unless expression
1/2/2026
ifZIO expression
1/2/2026
ZIO loop flow
1/2/2026
Loop expression
1/2/2026
Iterate expression
1/2/2026
Foreach expression
1/2/2026
ZIO error management
1/2/2026
Error recovery
1/2/2026
Error accumulation
1/2/2026
Using ZIO.collectAllParN for error accumulation
1/2/2026
Using ZIO.collectAllPar for error accumulation
1/2/2026
Error channel operators
1/2/2026
ZIO layer
1/2/2026
Basics of ZLayer
1/2/2026
Construction
1/2/2026
Composition
1/2/2026
Providing environment
1/2/2026
Using services
1/2/2026
Lifecycle management
1/2/2026
ZIO concurrency
1/2/2026
ZIO fibers
1/2/2026
ZIO synchronization
1/2/2026
ZIO STM
1/2/2026
STM composition
1/2/2026
Fiber-scoped transactions
1/2/2026
ZIO resource management
1/2/2026
ZIO testing
1/2/2026
Test environments
1/2/2026
Using zio.test package
1/2/2026
Running tests
1/2/2026
Asynchronous testing
1/2/2026
Mocking dependencies
1/2/2026
6. Effects Implementation in Pure Way
1/2/2026
Effects and side effects
1/2/2026
Side effects as blocker
1/2/2026
Handling side effects
1/2/2026
Exceptions as side effects
1/2/2026
Functional exception handling
1/2/2026
I/O as side effects
1/2/2026
Functional I/O implementations
1/2/2026
Cats Effects
1/2/2026
ZIO effects
1/2/2026
7. Functional Pattern Implementation
1/2/2026
Domain-specific language
1/2/2026
Using DSL to solve problem statement
1/2/2026
Initial encoding
1/2/2026
Tagless final
1/2/2026
Free functor
1/2/2026
Applications
1/2/2026
Free monad
1/2/2026
Free monad in category theory
1/2/2026
Free applicative
1/2/2026
Free applicative in category theory
1/2/2026
8. Functional Tools
1/2/2026
Monocle for optics
1/2/2026
Setting up dependencies
1/2/2026
Monix for asynchrony
1/2/2026
Sub projects
1/2/2026
Caliban
1/2/2026
GraphQL schema
1/2/2026
Setting up server
1/2/2026
Circe
1/2/2026
Working with Circe
1/2/2026
ZIO scheduling
1/2/2026
PureConfig
1/2/2026
Functional Streams for Scala
1/2/2026
FS2 sub projects
1/2/2026
Cats collection
1/2/2026
Cats retry
1/2/2026
Setting dependency
1/2/2026
9. Web Implementation in Functional Way
1/2/2026
Functional web
1/2/2026
Functional web implementation
1/2/2026
Advantages of functional web
1/2/2026