# A birds-eye view of Arrow: Data Immutability with Arrow Optics

DevFeed: [A birds-eye view of Arrow: Data Immutability with Arrow Optics](<https://devfeed.tech/articles/a-birds-eye-view-of-arrow-data-immutability-with-arrow-optics-39301.md>)

Original publisher: [Read original article](<https://kt.academy/article/fk-arrow-optics>)

Published: 2022-12-19T00:15:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [API](<https://devfeed.tech/topics/api.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [arrow](<https://devfeed.tech/tags/arrow.md>), [code](<https://devfeed.tech/tags/code.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [immutability](<https://devfeed.tech/tags/immutability.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [ksp](<https://devfeed.tech/tags/ksp.md>), [lens](<https://devfeed.tech/tags/lens.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

## AI overview

This tutorial introduces Arrow Optics for transforming nested immutable data in Kotlin. It explains how Arrow Optics uses a basic library and a compiler plug-in built with Kotlin Symbol Processing, with annotations generating lenses that combine getters and setters.

## Source excerpt

Learn to use Arrow Optics to support working on immutable objects.