Georg Dresler

Tackling Complexity With Functional Programming And Kotlin

What if your type system could eliminate entire classes of runtime errors? Learn how functional patterns in Kotlin make illegal states unrepresentable, leading to more robust code.

Tackling Complexity With Functional Programming And Kotlin
#1about 3 minutes

Understanding a complex and unusual feature request

A real-world example of a complex feature request involves an offline form editor that syncs data via JSON embedded in PDF metadata.

#2about 3 minutes

Why traditional try-catch blocks fail for complex errors

Traditional try-catch blocks for error handling either obscure an error's origin or make the code unreadable with excessive boilerplate.

#3about 7 minutes

Using the Either type for robust functional error handling

Replace exceptions with the `Either` sealed class, using `flatMap` to chain successful operations and `fold` to handle the final success or error state.

#4about 4 minutes

Enforcing data validation using private constructors in Kotlin

Use a private constructor combined with a companion object's `invoke` operator to run validation logic upon object creation, preventing invalid states.

#5about 7 minutes

Modeling distinct data states with algebraic data types

Use sealed classes (sum types) to model different states like `Draft` and `Validated`, letting the compiler enforce state-specific logic instead of relying on boolean flags.

#6about 4 minutes

Recap of functional techniques and audience Q&A

A summary of using `Either` for errors, private constructors for validation, and ADTs for state, followed by a Q&A on libraries like Arrow and custom exceptions.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

From learning to earning

Jobs that call for the skills explored in this talk.