Popularity
3.3
Growing
Activity
0.0
Stable
47
5
6

Programming language: Kotlin
License: Apache License 2.0
Tags: Functional Programming    

klenses alternatives and similar libraries

Based on the "Functional Programming" category.
Alternatively, view klenses alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of klenses or a related project?

Add another 'Functional Programming' Library

README

klenses

Lenses for Kotlin.

Maven Central Build Status

Lenses are property references with some extra abilities: they can also be used to create a copy of an object with the property set to a different value, and they compose to form pointers into nested objects.

data class Inner(val value: String)
data class Outer(val outerValue: String, val inner: Inner?)

val foo = Outer("foo", null)

val outerValueLens = +Outer::outerValue
val innerLens = Outer::inner orElse Inner("xyzzy")
val innerValueLens = innerLens + Inner::value 

assertEquals("foo", outerValueLens(foo))
assertEquals(Outer("quux", null), outerValueLens(foo, "quux"))
assertEquals(Inner("xyzzy"), innerLens(foo))
assertEquals(Outer("foo", Inner("frobnitz")), innerValueLens(foo, "frobnitz"))
assertEquals(Outer("foo", Inner("XYZZY")), innerValueLens(foo) { toUpperCase() })