https://github.com/encalmo/lens
Library for Scala > 3.6.2 providing Lens[R,V] typeclass derivation
https://github.com/encalmo/lens
lenses scala scala3 scala3-metaprogramming
Last synced: 3 months ago
JSON representation
Library for Scala > 3.6.2 providing Lens[R,V] typeclass derivation
- Host: GitHub
- URL: https://github.com/encalmo/lens
- Owner: encalmo
- License: apache-2.0
- Created: 2025-01-06T13:48:16.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-03-18T16:27:39.000Z (3 months ago)
- Last Synced: 2025-03-18T16:41:12.244Z (3 months ago)
- Topics: lenses, scala, scala3, scala3-metaprogramming
- Language: Scala
- Homepage: https://encalmo.github.io/lens/
- Size: 31.3 KB
- Stars: 2
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
 
# lens
Scala library providing Lens[R,V] typeclass derivation.
## Dependencies
- [Scala](https://www.scala-lang.org/) >= 3.6.2
## Usage
Use with SBT
libraryDependencies += "org.encalmo" % "lens_3" % "0.9.0"
or with SCALA-CLI
//> using dep org.encalmo::lens:0.9.2
## Examples
```scala
case class Person(firstName: String, lastName: String, address: Address)
case class Address(street1: String, street2: Option[String] = None, postcode: String, town: String, country: String)val townLens = Lens[Person].address.town
val mike = Person("Mike","Hart", Address("1 Abbey Road", None, "BN15 KJ", "Exeter", "United Kingdom"))val town = townLens.get(mike)
townLens.set(mike)("Derby")
townLens.update(mike, town => town.toUpperCase())```