About This Title

Pages: 468
Published: September 2023
ISBN: 9781680508451
In Print

Skill Level Meter

From Objects to Functions

Build Your Software Faster and Safer with Functional Programming and Kotlin

by Uberto Barbini

Build applications quicker and with less effort using functional programming and Kotlin. Learn by building a complete application, from gathering requirements to delivering a microservice architecture following functional programming principles. Learn how to implement CQRS and EventSourcing in a functional way to map the domain into code better and to keep the cost of change low for the whole application life cycle.

If you’re curious about functional programming or you are struggling with how to put it into practice, this guide will help you increase your productivity composing small functions together instead of creating fat objects.

eBook Formats:

  • PDF for desktop/tablets

  • epub for Apple Books, e-readers

  • mobi for Kindle readers

Get all eBook formats here for $25.95 (USD)

Add to Cart we accept visa, mastercard, amex, discover, paypal


Paperback Formats:

Please support indie bookstores!
Find indie bookstores in the U.S. Find indie bookstores around the world.


Switching to the functional paradigm isn’t easy when you’re used to object-oriented programming. You need more than just lambdas and mapping over collections to get a declarative style and disentangle the state from the computations. Use transformations and compositions to help you write less code with better results. Boost your productivity and harness the power of functional programming by creating real-world applications rather than focusing on theoretical concepts.

Work through a series of short exercises to find and compose pure functions, and create data structures that work like algebra. Get rid of mutable state in your software to eliminate the main source of bugs. Apply CQRS and EventSourcing patterns to translate stakeholder requirements into functional design and then into code. See how Kotlin’s easy-to-learn syntax and functional-friendly approach make it a great option for a pragmatic language that integrates well with existing Java code and libraries.

Leverage functional programming to build and deliver robust applications in less time and with fewer defects.

What You Need

The code in this book is designed to allow you to build your application from scratch on Windows, Mac and Linux. You will need a recent IDE, we recommend IntelliJ Community Edition, and Kotlin 1.9.x or later.

Resources

Releases:

  • P1.0 2023/09/12
  • B7.0 2023/04/19
  • B6.0 2023/01/13
  • B5.0 2022/09/22

Contents & Extracts

  • Acknowledgments
  • Preface
    • About This Book
  • Introduction: Why Functional Programming?
    • Why Kotlin?
    • What Functional Programming Is Really About
    • Unlearning Object-Oriented Programming
    • Recap
  • Preparing a New Application
    • Defining the Sample Application
    • Zettai: An Innovative To-Do List Application
    • Letting Tests Guide Development
    • Setting Up the Project
    • Making Unit Tests Functional
    • Recap
    • Exercises
  • Handling HTTP Using Functions
    • Kicking Off the Project
    • Serving HTML Pages Functionally
    • Starting Zettai
    • Designing with Arrows
    • Serving Lists from a Map
    • Recap
    • Exercises
  • Defining the Domain and Testing It
  • Modeling the Domain and the Adapters
    • Starting a New Story to Modify a List excerpt
    • Using Functional Dependency Injection
    • Debugging Functional Code
    • Functional Domain Modeling
    • Recap
    • Exercises
  • Using Events to Modify the State
    • Creating and Displaying To-Do Lists
    • Storing the State Changes
    • Unleashing the Power of Recursion
    • Folding Events
    • Discovering the Monoid
    • Recap
    • Exercises
  • Executing Commands to Generate Events
    • Creating a New List
    • Using Commands to Change the State
    • Modeling the Domain with States and Events
    • Writing Functional State Machines
    • Connecting the Hub
    • Understanding Commands and Events Better
    • Recap
    • Exercises
  • Handling Errors Functionally
    • Handling Errors Better
    • Learning Functors and Categories
    • Using Functors to Handle Errors
    • Working with Outcomes
    • Recap
    • Exercises
  • Using Functors to Project Events
    • Projecting Our Events
    • Running Queries on Functors
    • Thinking in Terms of Functors
    • Command and Query Responsibility Segregation (CQRS)
    • Recap
    • Exercises
  • Using Monads to Persist Data Safely
    • Persisting Safely
    • Connecting to the Database with Kotlin
    • Accessing Remote Data in a Functional Way
    • Exploring the Power of Monads
    • Recap
    • Exercises
  • Reading Context to Handle Commands
    • Accessing the Database with Monads excerpt
    • Handling Commands with Context Reader
    • Querying Projections from Database
    • Modeling the Domain with Event Sourcing
    • Recap
    • Exercises
  • Validating Data with Applicatives
    • Renaming a List
    • Transforming Functions with Two Parameters
    • Validating with Validations
    • Combining Applicative Functors
    • Improving the User Interface
    • Recap
    • Exercises
  • Monitoring and Functional JSON
    • Monitoring Our Application
    • Structured Logging
    • Making JSON Functional
    • Meeting Profunctors
    • Logging Database Calls
    • Recap
    • Exercises
  • Designing a Functional Architecture
    • Chasing Simplicity
    • Designing a Whole System
    • Translating to Code
    • Final Considerations
    • Exercises
  • What Is Functional Programming?
    • The Origins
    • Achieving Referential Transparency
    • Think in Morphisms
    • Recap
  • About Functional Kotlin
    • Setting Up Kotlin
    • Kotlin 101
    • Exploring the Kotlin Type System
  • A Pinch of Theory
    • Category Theory
    • It’s All About Morphisms
    • Types over Types
    • Functors Are Mappers
    • The Mysterious Monad
    • Connecting Everything with Yoneda
    • Conclusion
  • Additional Resources
    • Programming
    • Category Theory

Author

Uberto is a very passionate programmer, starting when he created his first video game on the ZxSpectrum many years ago. He worked in all kinds of organizations, from the very big to the very small, coaching and helping teams build software in an efficient and sustainable way to create value for the company. He has used a range of functional languages (Haskell, Clojure, Scala), and he is currently in love with the simplicity of Kotlin and its productivity. He is a regular speaker at conferences around the world on Kotlin and Java, and he enjoys teaching courses and mentoring young programmers.

eBook Formats:

  • PDF for desktop/tablets

  • epub for Apple Books, e-readers

  • mobi for Kindle readers

Get all eBook formats here for $25.95 (USD)

Add to Cart we accept visa, mastercard, amex, discover, paypal


Paperback Formats:

Please support indie bookstores!
Find indie bookstores in the U.S. Find indie bookstores around the world.

Related Titles:

Skill Level Meter

About This Title

Pages: 468
Published: September 2023
ISBN: 9781680508451
Edition: 1
In Print