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
    • Method Detail

      • compose

        public <T> Option<S,​T> compose​(Prism<O,​T> prism)
        Composing a Lens and a Prism returns and Optional
        Type Parameters:
        T - the type of the new focus of the Optional
        Parameters:
        prism - A Prism from the focus of the lens to the new focus of the Optional
        Returns:
        an Optional
      • compose

        public <B> Lens<S,​B> compose​(Lens<O,​B> other)
        Compose this lens with another one
        Type Parameters:
        B - the type of the focus on the new lens
        Parameters:
        other - the other lens
        Returns:
        a new Lens