Skip to content

v0.4.0

Compare
Choose a tag to compare
@sagifogel sagifogel released this 10 Mar 22:34
· 228 commits to master since this release

What's Changed

Lens

final case class Person(name: String, address: Address)
final case class Address(city: String, street: Street)
final case class Street(name: String, number: Int)

val person = Person("Walter White", Address("Albuquerque", Street("Negra Arroyo Lane", 9)))

person
  .lens(_.address.street.number)
  .set(308)
// val res: Person = Person(Walter White,Address(Albuquerque,Street(Negra Arroyo Lane,308)))

Traversal

import cats.syntax.semigroup._
import proptics.syntax.all._
import proptics.instances.all._

val hktSupport = Set("Scala", "Haskell")

List("Erlang", "F#", "Scala", "Haskell")
  .each
  .toWords
  .filter(hktSupport.contains)
  .over(_ |+| "")
// val res: List[String] = List(Erlang, F#, Scala √, Haskell √)

Fold

import proptics.syntax.all._
import proptics.instances.all._

val input = List("Say Anything", "My Octopus Teacher", "Name of the Rose")

input
  .foldable
  .andThen(words.take(1))
  .viewAll
// val res: List[String] = List(Say, My, Name)