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