Skip to content

semigroupoid/monocle-cats

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monocle Lenses and Cats State

Build Status Coverage Status Maven Central

This library brings together Monocle Lenses and Cats project.

Use

libraryDependencies += "com.dragishak" %% "monocle-lens" % "<version>"

Versions

Monocle Cats monocle-lens
1.2.2 0.7.2 1.0
1.3.2 0.8.1 1.1

Example

import cats.monocle.syntax._
import cats.instances.all._
import monocle.macros.Lenses

@Lenses case class Address(street: String, city: String, zip: Int)
@Lenses case class Person(name: String, age:Int, address: Address)

val setStreet = Address.street := "13 Main St."
val incrementAge = Person.age += 1

val state = for {
  newStreetName <- Person.address %%= setStreet
  newAge        <- incrementAge
} yield(newStreetName, newAge)

val person = Person("Alice", 30, Address("1 Main St", "San Francisco", 94123))

val (changedPerson, (newStreet, newAge)) = state.run(person).value

Copyright and License

All code is available to you under the MIT license, available at http://opensource.org/licenses/MIT and also in the LICENSE file.

Copyright Dragisa Krsmanovic, 2016.

About

Monocle Lenses and Cats State

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Scala 100.0%