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)