úÎ7 4+      !"#$%&'()*%The isomorphism type class is like a + but works in two directions. AThe bijections datatype, an arrow that works in two directions. EAbstract Lens datatype. The getter and setter functions work in some J arrow. Arrows allow for effectful lenses, for example, lenses that might  fail or use state.  FAbstract Point datatype. The getter and setter functions work in some  arrow. DModification as a compositon of a getter and setter. Unfortunately,  ,! is needed for this composition. *Create a lens out of a getter and setter. "Get the getter arrow from a lens. "Get the setter arrow from a lens. $Get the modifier arrow from a lens. Make a   diverge in two directions. Lifting s. -We can diverge s using an isomorphism. .We can diverge es using an isomorphism. /Bijections as categories.     8Pure lens type specialized for pure accessor functions. 0/Create a pure lens from a getter and a setter. %We expect the following law to hold:   get l (set l a f) == a Or, equivalently:  set l (get l f) f == f Getter for a pure lens. Setter for a pure lens. Modifier for a pure lens. @Get a value out of the state, pointed to by the specified lens. FSet a value somewhere in the state, pointed to by the specified lens.  Alias for  that reads like an assignment. IModify a value with a function somewhere in the state, pointed to by the  specified lens. @Fetch a value pointed to by a lens out of a reader environment. EExecute a computation in a modified environment. The lens is used to  point out the part to modify.  KLens type for situations in which the accessor functions can fail. This is G useful, for example, when accessing fields in datatypes with multiple  constructors. 12!KCreate a lens that can fail from a getter and a setter that can themselves  potentially fail. "IGetter for a lens that can fail. When the field to which the lens points & is not accessible the getter returns 3. #ISetter for a lens that can fail. When the field to which the lens points ) is not accessible this function returns 3. $KModifier for a lens that can fail. When the field to which the lens points ) is not accessible this function returns 3. %#Embed a pure lens that points to a 4 field into  a lens that might fail.  !"#$% !"#$% !"#$% 5&JDerive lenses including type signatures for all the record selectors in a I datatype. The types will be polymorphic and can be used in an arbitrary  context. 'JDerive lenses including type signatures for all the record selectors in a D datatype. The signatures will be concrete and can only be used the  appropriate context. (HDerive lenses without type signatures for all the record selectors in a  datatype. 6789:;&'(&'()FGet a value out of state, pointed to by the specified lens that might F fail. When the lens getter fails this computation will fall back to  <. *EFetch a value, pointed to by a lens that might fail, out of a reader L environment. When the lens getter fails this computation will fall back to  <. )*)*)*&'(&'(=      !"#$%&'(&)*+,-./0&12&13456789:&;<=fclabels-1.0.2Data.Label.AbstractData.Label.PureData.Label.PureMData.Label.Maybe Data.LabelData.Label.MaybeMData.Label.DeriveIsoiso BijectionBijfwbwLensunLensPoint_get_set_modifylensgetsetmodifybimapforliftBij:->getsputs=:askslocal:~>embedmkLabels mkLabelsMonomkLabelsNoTypesbaseGHC.BaseFunctor Control.Arrow ArrowApply$fIso~>Bijection $fIso~>Lens$fCategoryBijectionPureLens MaybeLensrun Data.MaybeNothingMaybefclErrorderive1derive prettyName prettyTyVar prettyType prettyPred Control.Monadmzero