Class PIso<S,T,A,B>

java.lang.Object
io.atlassian.fugue.optic.PIso<S,T,A,B>
Type Parameters:
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
Direct Known Subclasses:
Iso

public abstract class PIso<S,T,A,B> extends Object
A PIso defines an isomorphism between types S, A and B, T:
             get                           reverse.get
    -------------------->             -------------------->
  S                       A         T                       B
    <--------------------             <--------------------
      reverse.reverseGet                   reverseGet

In addition, if f and g forms an isomorphism between `A` and `B`, i.e. if `f . g = id` and `g . f = id`, then a PIso defines an isomorphism between `S` and `T`:

    S           T                                   S           T
    |           ↑                                   ↑           |
    |           |                                   |           |
get |           | reverseGet     reverse.reverseGet |           | reverse.get
    |           |                                   |           |
    ↓     f     |                                   |     g     ↓
    A --------> B                                   A <-------- B

A PIso is also a valid Getter, Fold, PLens, PPrism, POptional, PTraversal and PSetter