!g      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX Y Z [ \ ] ^ _ ` a b c d e f Safe=?@AUV fclabels"The ArrowFail class is similar to g[, but additionally embeds some error value in the computation instead of throwing it away.fclabelsEContext that represents computations that might fail with some error.fclabels>Context that represents computations that might silently fail.fclabelsCContext that represents computations that always produce an output.fclabelsAn isomorphism is like a h that works in two directions. fclabelsAbstract Point datatype. The getter and modifier operations work in some category. The type of the value pointed to might change, thereby changing the type of the outer structure. fclabels%Get the getter category from a Point. fclabels'Get the modifier category from a Point. fclabels%Get the setter category from a Point.fclabels'Identity Point. Cannot change the type.fclabelsPoint composition.fclabelsFlip an isomorphism.fclabelsIsomorphisms are categories.  88Safe &'=?@AUV#J fclabelsAbstract polymorphic lens datatype. The getter and setter functions work in some category. Categories allow for effectful lenses, for example, lenses that might fail or use state.fclabels)Create a lens out of a getter and setter.fclabelsCreate lens from a  .fclabels!Get the getter arrow from a lens.fclabels#Get the modifier arrow from a lens.fclabels!Get the setter arrow from a lens.fclabels&Lift a polymorphic isomorphism into a .>The isomorphism needs to be passed in twice to properly unify.fclabels_Make a Lens output diverge by changing the input of the modifier. The operator can be read as  points-to.fclabelsNon-operator version of P, since it clashes with an operator when the Arrows language extension is used.ifclabels)Convert a polymorphic lens back to point. fclabels)Category instance for monomorphic lenses.fclabelsGetter.fclabels Modifier.  77SafeUV3 !fclabelsJPartial lens type for situations in which the accessor functions can fail."fclabels_Create a lens that can fail from a getter and a modifier that can themselves potentially fail.#fclabelsoGetter for a lens that can fail. When the field to which the lens points is not accessible the getter returns j.$fclabelstModifier for a lens that can fail. When the field to which the lens points is not accessible this function returns j.%fclabelsrSetter for a lens that can fail. When the field to which the lens points is not accessible this function returns j.&fclabels$Embed a total lens that points to a k$ field into a lens that might fail.'fclabelsLike $P but return behaves like the identity function when the field could not be set.(fclabelsLike %P but return behaves like the identity function when the field could not be set.)fclabelsLike $X, but update allows, depending on the underlying lens, to remove items by modifying to j."fclabelsGetter.fclabels Modifier. !"#$%&'() !"#$%&(')Safe=?@AUV= *fclabelsPartial monomorphic lens.+fclabelsTotal monomorphic lens.,fclabelsAbstract monomorphic lens datatype. The getter and setter functions work in some category. Categories allow for effectful lenses, for example, lenses that might fail or use state.-fclabels)Create a lens out of a getter and setter..fclabels!Get the getter arrow from a lens./fclabels#Get the modifier arrow from a lens.0fclabels!Get the setter arrow from a lens.1fclabelsCreate lens from a  .2fclabelsLift an isomorphism into a ,.-fclabelsGetter.fclabels Modifier. *+,-./012 ,-./102+*SafePUVK3fclabels_Lens type for situations in which the accessor functions can fail with some error information.4fclabels_Create a lens that can fail from a getter and a modifier that can themselves potentially fail.5fclabelsoGetter for a lens that can fail. When the field to which the lens points is not accessible the getter returns j.6fclabelstModifier for a lens that can fail. When the field to which the lens points is not accessible this function returns l.7fclabelsrSetter for a lens that can fail. When the field to which the lens points is not accessible this function returns l.8fclabels%Embed a total lens that points to an m$ field into a lens that might fail.9fclabelsLike 6P but return behaves like the identity function when the field could not be set.:fclabelsLike 7P but return behaves like the identity function when the field could not be set.4fclabelsGetter.fclabels Modifier. 3456789: 345678:9None46UVy;fclabelsDerive labels including type signatures for all the record selectors for a collection of datatypes. The types will be polymorphic and can be used in an arbitrary context.<fclabelsDerive labels including type signatures for all the record selectors in a single datatype. The types will be polymorphic and can be used in an arbitrary context.=fclabelsLike ;J, but uses the specified function to produce custom names for the labels.For instance, (drop 1 . dropWhile (/='_')) creates a label val from a record Rec { rec_val :: X }.>fclabelsDerive unnamed labels as n-tuples that can be named manually. The types will be polymorphic and can be used in an arbitrary context.Example: $(left, right) = $(getLabel ''Either)*The lenses can now also be typed manually: aleft :: (Either a b -> Either c b) :~> (a -> c) right :: (Either a b -> Either a c) :~> (b -> c){Note: Because of the abstract nature of the generated lenses and the top level pattern match, it might be required to use NoMonomorphismRestriction in some cases.?fclabels2Low level label as expression derivation function.@fclabels/Low level standalone label derivation function.AfclabelsDefault way of generating a label name from the Haskell record selector name. If the original selector starts with an underscore, remove it and make the next character lowercase. Otherwise, add l), and make the next character uppercase.BfclabelsDerive labels for all the record types in the supplied declaration. The record fields don't need an underscore prefix. Multiple data types / newtypes are allowed at once.The advantage of this approach is that you don't need to explicitly hide the original record accessors from being exported and they won't show up in the derived n instance.Example: afclabels [d| data Record = Record { int :: Int , bool :: Bool } deriving Show |] 5ghci> modify int (+2) (Record 1 False) Record 3 False?fclabels Generate type signatures or not.fclabelsGenerate concrete type or abstract type. When true the signatures will be concrete and can only be used in the appropriate context. Total labels will use (:->l) and partial labels will use either `Lens Partial` or `Lens Failing` dependent on the following flag:fclabelsUse  for failure instead of g.fclabelsThe type to derive labels for.@fclabels1Supply a function to perform custom label naming.fclabels Generate type signatures or not.fclabelsGenerate concrete type or abstract type. When true the signatures will be concrete and can only be used in the appropriate context. Total labels will use (:->l) and partial labels will use either `Lens Partial` or `Lens Failing` dependent on the following flag:fclabelsUse  for failure instead of g.fclabelsGenerate inline pragma or not.fclabelsThe type to derive labels for.;<=>?@AB<;=>B@?ANoneUVHfclabels1Create a total lens from a getter and a modifier.$We expect the following law to hold: #get l (modify l m f) == m (get l f)Ifclabels$Get the getter function from a lens.Jfclabels&Get the modifier function from a lens.Kfclabels$Get the setter function from a lens.HfclabelsGetter.fclabels Modifier.+2;<>BHIJK+HIKJ2<;>BNoneUV LfclabelsJLens pointing to the head of a list's cons cell. (Partial and monomorphic)MfclabelsJLens pointing to the tail of a list's cons cell. (Partial and monomorphic)NfclabelsGLens pointing to the left value in an Either. (Partial and polymorphic)OfclabelsHLens pointing to the right value in an Either. (Partial and polymorphic)Pfclabels@Lens pointing to the value in a Maybe. (Partial and polymorphic)QfclabelsJLens pointing to the first component of a 2-tuple. (Total and polymorphic)RfclabelsKLens pointing to the second component of a 2-tuple. (Total and polymorphic)SfclabelsNPolymorphic lens that swaps the components of a tuple. (Total and polymorphic)TfclabelsJLens pointing to the first component of a 3-tuple. (Total and polymorphic)UfclabelsKLens pointing to the second component of a 3-tuple. (Total and polymorphic)VfclabelsJLens pointing to the third component of a 3-tuple. (Total and polymorphic)WfclabelsaPartial isomorphism for readable and showable values. Can easily be lifted into a lens by using 2. LMNOPQRSTUVW LMNOPQRSTUVW SafeUVaXfclabels9Total lens type specialized for total accessor functions.Yfclabels1Create a total lens from a getter and a modifier.$We expect the following law to hold: get l (set l a f) == a set l (get l f) f == fZfclabels$Get the getter function from a lens.[fclabels&Get the modifier function from a lens.\fclabels$Get the setter function from a lens.]fclabelsModify in some context.^fclabelsLifted lens composition..For example, useful when specialized to lists: ,:: (f :-> [o]) -> (o :-> [a]) -> (f :-> [a])YfclabelsGetter.fclabels Modifier.XYZ[\]^XYZ[\]^ SafeUV)_fclabels?Get a value out of the state, pointed to by the specified lens.`fclabelsESet a value somewhere in the state, pointed to by the specified lens.afclabelsYModify a value with a function somewhere in the state, pointed to by the specified lens.bfclabels Alias for ` that reads like an assignment.cfclabels Alias for a, that reads more or less like an assignment.dfclabels?Fetch a value pointed to by a lens out of a reader environment.efclabelscExecute a computation in a modified environment. The lens is used to point out the part to modify.ffclabelsModify a value with a function somewhere in the state, pointed to by the specified lens. Additionally return a separate value based on the modification._`abcdef_`afbcdeb2c2o    !"#$%&'!()*+', !"# !()*-./0123456789!:;<=>?@ABCDE , !    F G H I  J K L M NOPQORSTOUVOUWOXYOXZO[\]%fclabels-2.0.4-E7eCoHn5xg2HU6FsmBhSO8Data.Label.PointData.Label.PolyData.Label.PartialData.Label.MonoData.Label.FailingData.Label.Derive Data.LabelData.Label.BaseData.Label.TotalData.Label.Monadic ArrowFail failArrowFailingPartialTotalIsofwbwPointgetmodifysetidentitycomposeinv$fApplicativePoint$fFunctorPoint$fCategoryTYPEIso$fAlternativePoint$fArrowFaileKleisli$fArrowFaileKleisli0Lenslenspointiso>-for$fCategoryTYPELens:~>embedmodify'set'update:->mkLabelsmkLabel mkLabelsNamedgetLabel getLabelWith mkLabelsWith defaultNamingfclabels $fEqField$fFunctorField$fFoldableField $fEqContext $fShowContextheadtailleftrightjustfstsndswapfst3snd3trd3readShowtraverseliftedgetsputs=:=.askslocal modifyAndGetbase Control.Arrow ArrowZeroControl.CategoryCategoryunpack GHC.MaybeNothingMaybe Data.EitherLeftEitherGHC.ShowShow