úÎ¥óØj      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ [ \ ] ^ _ ` a b c d e f g h i Safe9;<=QR"The ArrowFail class is similar to j[, but additionally embeds some error value in the computation instead of throwing it away.EContext that represents computations that might fail with some error.>Context that represents computations that might silently fail.CContext that represents computations that always produce an output.An isomorphism is like a k that works in two directions. µAbstract 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. %Get the getter category from a Point. 'Get the modifier category from a Point. %Get the setter category from a Point.'Identity Point. Cannot change the type.Point composition.Flip an isomorphism.)Missing Alternative instance for Kleisli.)Missing Applicative instance for Kleisli.%Missing Functor instance for Kleisli.Isomorphisms are categories. lmn    lmn88Safe %&9;<=QR µAbstract 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.)Create a lens out of a getter and setter.Create lens from a  .!Get the getter arrow from a lens.#Get the modifier arrow from a lens.!Get the setter arrow from a lens. &Lift a polymorphic isomorphism into a .>The isomorphism needs to be passed in twice to properly unify.!_Make a Lens output diverge by changing the input of the modifier. The operator can be read as  points-to."Non-operator version of !P, since it clashes with an operator when the Arrows language extension is used.o)Convert a polymorphic lens back to point.#)Category instance for monomorphic lenses. pqGetter. Modifier. !"o#  !"  !" pq !"o#!7"7SafeQR$9Total lens type specialized for total accessor functions.%1Create 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 == f&$Get the getter function from a lens.'&Get the modifier function from a lens.($Get the setter function from a lens.)Modify in some context.*Lifted lens composition..For example, useful when specialized to lists: ,:: (f :-> [o]) -> (o :-> [a]) -> (f :-> [a])$%Getter. Modifier.&'()*$%&'()*$%&'()*$%&'()*SafeQR +JPartial lens type for situations in which the accessor functions can fail.,_Create a lens that can fail from a getter and a modifier that can themselves potentially fail.-oGetter for a lens that can fail. When the field to which the lens points is not accessible the getter returns r..tModifier for a lens that can fail. When the field to which the lens points is not accessible this function returns r./rSetter for a lens that can fail. When the field to which the lens points is not accessible this function returns r.0$Embed a total lens that points to a s$ field into a lens that might fail.1Like .P but return behaves like the identity function when the field could not be set.2Like /P but return behaves like the identity function when the field could not be set.3Like .X, but update allows, depending on the underlying lens, to remove items by modifying to r. +,Getter. Modifier.-./0123 +,-./0123 +,-./0213 +,-./0123Safe9;<=QR 4Partial monomorphic lens.5Total monomorphic lens.6µAbstract 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.7)Create a lens out of a getter and setter.8!Get the getter arrow from a lens.9#Get the modifier arrow from a lens.:!Get the setter arrow from a lens.;Create lens from a  .<Lift an isomorphism into a 6. 4567Getter. Modifier.89:;< 456789:;< 6789;:<54 456789:;<SafeQR=?Get a value out of the state, pointed to by the specified lens.>ESet a value somewhere in the state, pointed to by the specified lens.?YModify a value with a function somewhere in the state, pointed to by the specified lens.@ Alias for > that reads like an assignment.A Alias for ?, that reads more or less like an assignment.B?Fetch a value pointed to by a lens out of a reader environment.CcExecute a computation in a modified environment. The lens is used to point out the part to modify.DšModify a value with a function somewhere in the state, pointed to by the specified lens. Additionally return a separate value based on the modification.=>?@ABCD=>?@ABCD=>?D@ABC=>?@ABCD@2A2SafeLQRE_Lens type for situations in which the accessor functions can fail with some error information.F_Create a lens that can fail from a getter and a modifier that can themselves potentially fail.GoGetter for a lens that can fail. When the field to which the lens points is not accessible the getter returns r.HtModifier for a lens that can fail. When the field to which the lens points is not accessible this function returns t.IrSetter for a lens that can fail. When the field to which the lens points is not accessible this function returns t.J%Embed a total lens that points to an u$ field into a lens that might fail.KLike HP but return behaves like the identity function when the field could not be set.LLike IP but return behaves like the identity function when the field could not be set.EFGetter. Modifier.GHIJKL EFGHIJKL EFGHIJLKEFGHIJKLNone24QRM¬Derive 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.N£Derive 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.OLike MJ, 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 }.P…Derive 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.Q2Low level label as expression derivation function.R/Low level standalone label derivation function.SÄDefault 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.T¬Derive 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 v instance.Example: afclabels [d| data Record = Record { int :: Int , bool :: Bool } deriving Show |] 5ghci> modify int (+2) (Record 1 False) Record 3 False0wxyz{|}~€MNOPQ Generate type signatures or not.¡Generate 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:Use  for failure instead of j.The type to derive labels for.R1Supply a function to perform custom label naming. Generate type signatures or not.€Generate 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:Use  for failure instead of j.Generate inline pragma or not.The type to derive labels for.ST‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžMNOPQRSTNMOPTRQS+wxyz{|}~€MNOPQRST‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œž NoneQRZ1Create 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)[$Get the getter function from a lens.\&Get the modifier function from a lens.]$Get the setter function from a lens.ZGetter. Modifier.[\]!"5<MNPTZ[\]5Z[]\!"<NMPTZ[\] NoneQR ^JLens pointing to the head of a list's cons cell. (Partial and monomorphic)_JLens pointing to the tail of a list's cons cell. (Partial and monomorphic)`GLens pointing to the left value in an Either. (Partial and polymorphic)aHLens pointing to the right value in an Either. (Partial and polymorphic)b@Lens pointing to the value in a Maybe. (Partial and polymorphic)cJLens pointing to the first component of a 2-tuple. (Total and polymorphic)dKLens pointing to the second component of a 2-tuple. (Total and polymorphic)eNPolymorphic lens that swaps the components of a tuple. (Total and polymorphic)fJLens pointing to the first component of a 3-tuple. (Total and polymorphic)gKLens pointing to the second component of a 3-tuple. (Total and polymorphic)hJLens pointing to the third component of a 3-tuple. (Total and polymorphic)iaPartial isomorphism for readable and showable values. Can easily be lifted into a lens by using <. ^_`abcdefghi ^_`abcdefghi ^_`abcdefghi ^_`abcdefghiŸ    !"#$%&'()*$+,-$./01-*#$%&2345678#$./09:;<=>?@ABCDE $    F G H I J K L M N O P QRSTRUVWXYZ#[R\]R\^R_`R_aRbcddeefgghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰'fclabels-2.0.3.2-3Xs3bCBbAC9J1XqCJSoYEpData.Label.PointData.Label.PolyData.Label.TotalData.Label.PartialData.Label.MonoData.Label.MonadicData.Label.FailingData.Label.Derive Data.LabelData.Label.Base ArrowFail failArrowFailingPartialTotalIsofwbwPointgetmodifysetidentitycomposeinv$fAlternativeKleisli$fApplicativeKleisli$fFunctorKleisli$fArrowFaileKleisli$fArrowFaileKleisli0$fCategoryTYPEIso$fAlternativePoint$fApplicativePoint$fFunctorPointLenslenspointiso>-for$fCategoryTYPELens:->traverselifted:~>embedmodify'set'updategetsputs=:=.askslocal modifyAndGetmkLabelsmkLabel mkLabelsNamedgetLabel getLabelWith mkLabelsWith defaultNamingfclabels $fEqField$fFunctorField$fFoldableField $fEqContext $fShowContextheadtailleftrightjustfstsndswapfst3snd3trd3readShowbase Control.Arrow ArrowZeroControl.CategoryCategoryconstcurryuncurryunpackIdGHC.BaseNothingMaybe Data.EitherLeftEitherGHC.ShowShowTypingContextSubstFieldLabel LabelDecl LabelExprmkLabelsWithForDecgenerateLabels groupFieldsconstructorFieldsmkSubstprune unifiableCon unifiable generateLabelmodifiergettersetter freshNames computeTypes isMonomorphic typeVariablestypeFromBinderbinderFromTypemapTypeVariablesmapType substitutenameFromBindermapPred mapTyVarBndrpretty prettyTypereifyDecfclErrorclassPtrd