CARVIEW |
About This Title
Pages: 468
Published: September 2023
ISBN: 9781680508451
In Print

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 $29.95 (USD)
Paperback Formats:
Order via Bookshop (U.S. Only)
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
- Improving the Acceptance Tests
- Using Higher-Order Functions
- Separating the Domain from the
Infrastructure
- Driving the Tests from the Domain
- Converting DDT to Pesticide
- Recap
- Exercises
- 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
- Starting a New Story to Modify a List
excerpt
- 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
- Accessing the Database with Monads
excerpt
- 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 $29.95 (USD)
Paperback Formats:
Order via Bookshop (U.S. Only)
Please support indie bookstores!
Find indie bookstores in the U.S. Find indie bookstores around the world.
Releases, Offers & More
Be the first to hear about our newest content, best promotions and upcoming events. Plus get 25% off your next purchase.
Related categories:
Related Titles:

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