Reader small image

You're reading from  Kotlin Design Patterns and Best Practices - Third Edition

Product typeBook
Published inApr 2024
PublisherPackt
ISBN-139781805127765
Edition3rd Edition
Right arrow
Author (1)
Alexey Soshin
Alexey Soshin
author image
Alexey Soshin

Alexey Soshin is a software architect with 18 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design
Read more about Alexey Soshin

Right arrow

Immutable data

At the very beginning of this book, back in Chapter 1, Getting Started with Kotlin, we mentioned how Kotlin favors immutability with the values over variables and immutable collections being the default. But the Arrow library takes this concept even further with its Optics module.

In order to work with the Optics library, we need to add the following dependency to our project:

implementation("io.arrow-kt:arrow-optics:1.2.1")

When discussing data classes in Chapter 2, Working with Creational Patterns, we mentioned that they have a copy method, which is undoubtedly useful for keeping immutable state but may be slightly cumbersome if we wanted to change deeply nested structures.

Let’s take the following example. We have a box of donuts that contains just a list of already familiar donuts:

data class DonutBoxOptics(val donuts: List<Donut>)
val donutBox = DonutBoxOptics(
    listOf(
        Donut("Gianduja Chocolate &...
lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Kotlin Design Patterns and Best Practices - Third Edition
Published in: Apr 2024Publisher: PacktISBN-13: 9781805127765

Author (1)

author image
Alexey Soshin

Alexey Soshin is a software architect with 18 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design
Read more about Alexey Soshin