trait PLens[S, T, A, B] extends POptional[S, T, A, B] with Getter[S, A]
A PLens can be seen as a pair of functions:
get: S => A
i.e. from anS
, we can extract anA
set: (B, S) => T
i.e. if we replace anA
by aB
in anS
, we obtain aT
A PLens could also be defined as a weaker PIso where replace requires an additional parameter than reverseGet.
PLens stands for Polymorphic Lens as it replace and modify methods change a type A
to B
and S
to T
.
Lens is a type alias for PLens restricted to monomorphic updates:
type Lens[S, A] = PLens[S, S, A, A]
A PLens is also a valid Getter, Fold, POptional, PTraversal and PSetter
Typically a PLens or Lens can be defined between a Product (e.g. case class, tuple, HList) and one of its component.
- S
the source of a PLens
- T
the modified source of a PLens
- A
the target of a PLens
- B
the modified target of a PLens
- Self Type
- PLens[S, T, A, B]
- Source
- Lens.scala
- See also
- Alphabetic
- By Inheritance
- PLens
- Getter
- POptional
- PTraversal
- Fold
- PSetter
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def all(p: (A) => Boolean): (S) => Boolean
check if there is no target or the target satisfies the predicate
- def andThen[C, D](other: PLens[A, B, C, D]): PLens[S, T, C, D]
- def andThen[B](other: Getter[A, B]): Getter[S, B]
- def andThen[C, D](other: POptional[A, B, C, D]): POptional[S, T, C, D]
- def andThen[C, D](other: PTraversal[A, B, C, D]): PTraversal[S, T, C, D]
compose a PTraversal with another PTraversal
compose a PTraversal with another PTraversal
- Definition Classes
- PTraversal
- def andThen[B](other: Fold[A, B]): Fold[S, B]
- def andThen[C, D](other: PSetter[A, B, C, D]): PSetter[S, T, C, D]
- def asFold: Fold[S, A]
- Definition Classes
- PLens → Getter → PTraversal
- def asGetter: Getter[S, A]
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def asOptional: POptional[S, T, A, B]
- def asSetter: PSetter[S, T, A, B]
view a PTraversal as a PSetter
view a PTraversal as a PSetter
- Definition Classes
- PTraversal
- def asTraversal: PTraversal[S, T, A, B]
view a POptional as a PTraversal
view a POptional as a PTraversal
- Definition Classes
- POptional
- def choice[S1](other: Getter[S1, A]): Getter[Either[S, S1], A]
join two Getter with the same target
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def exist(p: (A) => Boolean): (S) => Boolean
check if the target satisfies the predicate
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def find(p: (A) => Boolean): (S) => Option[A]
find if the target satisfies the predicate
- def fold(s: S)(implicit ev: Monoid[A]): A
combine all targets using a target's Monoid
combine all targets using a target's Monoid
- Definition Classes
- Fold
- def foldMap[M](f: (A) => M)(s: S)(implicit arg0: Monoid[M]): M
map each target to a Monoid and combine the results underlying representation of Fold, all Fold methods are defined in terms of foldMap
- def getAll(s: S): List[A]
get all the targets of a Fold
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def getOption(s: S): Option[A]
get the target of a POptional or nothing if there is no target
- def getOrModify(s: S): Either[T, A]
get the target of a POptional or return the original value while allowing the type to change if it does not match
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def headOption(s: S): Option[A]
get the first target
get the first target
- Definition Classes
- Fold
- def index[I, A1](i: I)(implicit evIndex: Index[A, I, A1], evMonoS: =:=[S, T], evMonoA: =:=[A, B]): Optional[S, A1]
- Definition Classes
- PLens → POptional → PTraversal → PSetter
- def index[I, A1](i: I)(implicit evIndex: Index[A, I, A1]): Fold[S, A1]
- def isEmpty(s: S): Boolean
check if there is no target
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def lastOption(s: S): Option[A]
get the last target
get the last target
- Definition Classes
- Fold
- def length(s: S): Int
calculate the number of targets
calculate the number of targets
- Definition Classes
- Fold
- def modify(f: (A) => B): (S) => T
modify polymorphically the target of a PTraversal with a function
modify polymorphically the target of a PTraversal with a function
- Definition Classes
- PTraversal → PSetter
- def modifyA[F[_]](f: (A) => F[B])(s: S)(implicit arg0: Applicative[F]): F[T]
modify polymorphically the target of a PTraversal with an Applicative function all traversal methods are written in terms of modifyA
modify polymorphically the target of a PTraversal with an Applicative function all traversal methods are written in terms of modifyA
- Definition Classes
- PLens → PTraversal
- def modifyOption(f: (A) => B): (S) => Option[T]
modify polymorphically the target of a POptional with a function.
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def nonEmpty(s: S): Boolean
check if there is a target
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def orElse(other: POptional[S, T, A, B]): POptional[S, T, A, B]
fall-back to another POptional in case this one doesn't match
- def parModifyF[F[_]](f: (A) => F[B])(s: S)(implicit F: Parallel[F]): F[T]
PTraversal.modifyA for a
Parallel
applicative functor.PTraversal.modifyA for a
Parallel
applicative functor.- Definition Classes
- PTraversal
- def replace(b: B): (S) => T
replace polymorphically the target of a PTraversal with a value
replace polymorphically the target of a PTraversal with a value
- Definition Classes
- PTraversal → PSetter
- def replaceOption(b: B): (S) => Option[T]
replace polymorphically the target of a POptional with a value.
- def some[A1, B1](implicit ev1: =:=[A, Option[A1]], ev2: =:=[B, Option[B1]]): POptional[S, T, A1, B1]
- Definition Classes
- PLens → POptional → PTraversal → PSetter
- def some[A1](implicit ev1: =:=[A, Option[A1]]): Fold[S, A1]
- def split[S1, A1](other: Getter[S1, A1]): Getter[(S, S1), (A, A1)]
pair two disjoint Getter
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def to[C](f: (A) => C): Getter[S, C]
Compose with a function lifted into a Getter
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- def zip[A1](other: Getter[S, A1]): Getter[S, (A, A1)]
- Definition Classes
- Getter
Deprecated Value Members
- def first[C]: PLens[(S, C), (T, C), (A, C), (B, C)]
- def left[C]: Getter[Either[S, C], Either[A, C]]
- def right[C]: Getter[Either[C, S], Either[C, A]]
- def second[C]: PLens[(C, S), (C, T), (C, A), (C, B)]
- def set(b: B): (S) => T
alias to replace
alias to replace
- Definition Classes
- PSetter
- Annotations
- @deprecated
- Deprecated
(Since version 3.0.0-M1) use replace instead
- def setOption(b: B): (S) => Option[T]
alias to replaceOption
alias to replaceOption
- Definition Classes
- POptional
- Annotations
- @deprecated
- Deprecated
(Since version 3.0.0-M1) use replaceOption instead
- def split[S1, T1, A1, B1](other: PLens[S1, T1, A1, B1]): PLens[(S, S1), (T, T1), (A, A1), (B, B1)]
pair two disjoint PLens
pair two disjoint PLens
- Annotations
- @deprecated
- Deprecated
(Since version 3.0.0-M4) no replacement