Giter Site home page Giter Site logo

monocle-cats's Introduction

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-cats" % "<version>"

Versions

Monocle Cats monocle-cats
1.2.2 0.7.2 1.0
1.3.2 0.8.1 1.1
1.4.0 0.9.0 1.2

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.

monocle-cats's People

Contributors

dragisak avatar semigroupoid avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.