monocle
package monocle
- Alphabetic
- By Inheritance
- monocle
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- abstract class Fold[S, A] extends Serializable
A Fold can be seen as a Getter with many targets or a weaker PTraversal which cannot modify its target.
- sealed abstract class FoldInstances extends AnyRef
- abstract class Getter[S, A] extends Serializable
A Getter can be seen as a glorified get method between a type S and a type A.
- sealed abstract class GetterInstances extends GetterInstances0
- sealed abstract class GetterInstances0 extends AnyRef
- type Iso[S, A] = PIso[S, S, A, A]
- sealed abstract class IsoInstances extends AnyRef
- type Lens[S, A] = PLens[S, S, A, A]
- sealed abstract class LensInstances extends AnyRef
- type Optional[S, A] = POptional[S, S, A, A]
- sealed abstract class OptionalInstances extends AnyRef
- abstract class PIso[S, T, A, B] extends Serializable
Iso is a type alias for PIso where
S
=A
andT
=B
:Iso is a type alias for PIso where
S
=A
andT
=B
:type Iso[S, A] = PIso[S, S, A, A]
An Iso defines an isomorphism between a type S and A:
get --------------------> S A <-------------------- reverseGet
A PIso allows to lift a function
f: A => B
toS => T
and a functiong: T => S
toB => A
g S T S <-------- T | ↑ | ↑ | | | | get | | reverseGet reverse.reverseGet | | reverse.get | | | | ↓ f | ↓ | A --------> B A B
A PIso is also a valid Getter, Fold, PLens, PPrism, POptional, PTraversal and PSetter
- S
the source of a PIso
- T
the modified source of a PIso
- A
the target of a PIso
- B
the modified target of a PIso
- See also
- abstract class PLens[S, T, A, B] extends Serializable
A PLens can be seen as a pair of functions:
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 set requires an additional parameter than reverseGet.
PLens stands for Polymorphic Lens as it set and modify methods change a type
A
toB
andS
toT
. 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
- See also
- abstract class POptional[S, T, A, B] extends Serializable
A POptional can be seen as a pair of functions:
A POptional can be seen as a pair of functions:
getOrModify: S => Either[T, A]
set : (B, S) => T
A POptional could also be defined as a weaker PLens and weaker PPrism
POptional stands for Polymorphic Optional as it set and modify methods change a type
A
toB
andS
toT
. Optional is a type alias for POptional restricted to monomorphic updates:type Optional[S, A] = POptional[S, S, A, A]
- S
the source of a POptional
- T
the modified source of a POptional
- A
the target of a POptional
- B
the modified target of a POptional
- See also
- abstract class PPrism[S, T, A, B] extends Serializable
A PPrism can be seen as a pair of functions:
A PPrism can be seen as a pair of functions:
getOrModify: S => Either[T, A]
reverseGet : B => T
A PPrism could also be defined as a weaker PIso where get can fail.
Typically a PPrism or Prism encodes the relation between a Sum or CoProduct type (e.g. sealed trait) and one of its element.
PPrism stands for Polymorphic Prism as it set and modify methods change a type
A
toB
andS
toT
. Prism is a type alias for PPrism where the type of target cannot be modified:type Prism[S, A] = PPrism[S, S, A, A]
A PPrism is also a valid Fold, POptional, PTraversal and PSetter
- S
the source of a PPrism
- T
the modified source of a PPrism
- A
the target of a PPrism
- B
the modified target of a PPrism
- See also
- abstract class PSetter[S, T, A, B] extends Serializable
A PSetter is a generalisation of Functor map:
A PSetter is a generalisation of Functor map:
map: (A => B) => F[A] => F[B]
modify: (A => B) => S => T
PSetter stands for Polymorphic Setter as it set and modify methods change a type
A
toB
andS
toT
. Setter is a type alias for PSetter restricted to monomorphic updates:type Setter[S, A] = PSetter[S, S, A, A]
PTraversal, POptional, PPrism, PLens and PIso are valid PSetter
- S
the source of a PSetter
- T
the modified source of a PSetter
- A
the target of a PSetter
- B
the modified target of a PSetter
- See also
- abstract class PTraversal[S, T, A, B] extends Serializable
A PTraversal can be seen as a POptional generalised to 0 to n targets where n can be infinite.
A PTraversal can be seen as a POptional generalised to 0 to n targets where n can be infinite.
PTraversal stands for Polymorphic Traversal as it set and modify methods change a type
A
toB
andS
toT
. Traversal is a type alias for PTraversal restricted to monomorphic updates:type Traversal[S, A] = PTraversal[S, S, A, A]
- S
the source of a PTraversal
- T
the modified source of a PTraversal
- A
the target of a PTraversal
- B
the modified target of a PTraversal
- See also
- type Prism[S, A] = PPrism[S, S, A, A]
- sealed abstract class PrismInstances extends AnyRef
- final case class PrismSyntax[S, A](self: Prism[S, A]) extends AnyVal with Product with Serializable
- type Setter[S, A] = PSetter[S, S, A, A]
- sealed abstract class SetterInstances extends AnyRef
- type Traversal[S, A] = PTraversal[S, S, A, A]
- sealed abstract class TraversalInstances extends AnyRef
Value Members
- object Fold extends FoldInstances with Serializable
- object Getter extends GetterInstances with Serializable
- object Iso
- object Lens
- object Monocle extends Syntaxes with GenericOptics with StdInstances
- object Optional
- object PIso extends IsoInstances with Serializable
- object PLens extends LensInstances with Serializable
- object POptional extends OptionalInstances with Serializable
- object PPrism extends PrismInstances with Serializable
- object PSetter extends SetterInstances with Serializable
- object PTraversal extends TraversalInstances with Serializable
- object Prism
- object Setter
- object Traversal