Package jsonvalues

Class Lens<S,​O>

  • Type Parameters:
    S - the source of a lens
    O - the target of a lens
    Direct Known Subclasses:
    JsObjLens

    public class Lens<S,​O>
    extends Object
    A Lens is an optic that can be seen as a pair of functions: - get: S => O i.e. from an S, we can extract an O - set: (O, S) => S i.e. from an S and a O, we obtain a S. Unless a prism, to go back to S we need another S. Typically a Lens can be defined between a Product (e.g. record, tuple) and one of its component. Given a lens there are essentially three things you might want to do: -view the subpart -modify the whole by changing the subpart -combine this lens with another lens to look even deeper