úΟå˜sW      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG H I J K L M N O P Q R S T U V  Safe-Inferred"The ArrowFail class is similar to W, but additionally embeds B some error value in the computation instead of throwing it away. FContext that represents computations that might fail with some error. ?Context that represents computations that might silently fail. DContext that represents computations that always produce an output. An isomorphism is like a X that works in two directions. IAbstract Point datatype. The getter and modifier operations work in some K 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. Y*Missing Alternative instance for Kleisli. Z*Missing Applicative instance for Kleisli. [&Missing Functor instance for Kleisli. \Isomorphisms are categories.  ]^_YZ[`a\bcd    ]^_YZ[`a\bcd Safe-Inferred IAbstract polymorphic lens datatype. The getter and setter functions work N 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. FMake a Lens output diverge by changing the input of the modifier. The  operator can be read as  points-to. e*Convert a polymorphic lens back to point. f*Category instance for monomorphic lenses. ghGetter.  Modifier. ef hgef Safe-Inferred Partial monomorphic lens. Total monomorphic lens. IAbstract monomorphic lens datatype. The getter and setter functions work N 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. "Get the getter arrow from a lens. $Get the modifier arrow from a lens. "Get the setter arrow from a lens. Create lens from a  . !Lift an isomorphism into a . Getter.  Modifier.  !  !  !  !None"KDerive labels including type signatures for all the record selectors for a N collection of datatypes. The types will be polymorphic and can be used in an  arbitrary context. #JDerive labels including type signatures for all the record selectors in a F single datatype. The types will be polymorphic and can be used in an  arbitrary context. $Like ":, 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 }. %HDerive 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:  2 left :: (Either a b -> Either c b) :~> (a -> c) 2 right :: (Either a b -> Either a c) :~> (b -> c) INote: Because of the abstract nature of the generated lenses and the top 2 level pattern match, it might be required to use NoMonomorphismRestriction  in some cases. &3Low level label as expression derivation function. '0Low level standalone label derivation function. (HDefault way of generating a label name from the Haskell record selector N 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. )HDerive labels for all the record types in the supplied declaration. The  record fields don'1t 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 i instance.  Example:   fclabels [d|  data Record = Record  { int :: Int  , bool :: Bool  } deriving Show  |] ( ghci> modify int (+2) (Record 1 False)  Record 3 False ,jklmnopqrs"#$%&!Generate type signatures or not. 7Generate 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 (:->) and partial  labels will use either ` Lens Partial` or ` Lens Failing` $ dependent on the following flag: Use  for failure instead of W. The type to derive labels for. '2Supply a function to perform custom label naming. !Generate type signatures or not. .Generate concrete type or abstract type. When 5 true the signatures will be concrete and can only 4 be used in the appropriate context. Total labels  will use (:->) and partial labels will use  either ` Lens Partial` or ` Lens Failing` dependent  on the following flag: Use  for failure instead of W. Generate inline pragma or not. The type to derive labels for. ()tuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ"#$%&'()#"$%)'&('jklmnopqsr"#$%&'()tuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ Safe-Inferred*KPartial lens type for situations in which the accessor functions can fail. +BCreate a lens that can fail from a getter and a modifier 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 Ž. -KModifier for a lens that can fail. When the field to which the lens points ) is not accessible this function returns Ž. .ISetter for a lens that can fail. When the field to which the lens points ) is not accessible this function returns Ž. /$Embed a total lens that points to a  field into a lens that might  fail. 0Like -> but return behaves like the identity function when the field  could not be set. 1Like .> but return behaves like the identity function when the field  could not be set. *+Getter.  Modifier. ,-./01 *+,-./01 *+,-./10*+,-./01 Safe-Inferred2GLens type for situations in which the accessor functions can fail with  some error information. 3BCreate a lens that can fail from a getter and a modifier that can  themselves potentially fail. 4IGetter for a lens that can fail. When the field to which the lens points & is not accessible the getter returns Ž. 5KModifier for a lens that can fail. When the field to which the lens points ) is not accessible this function returns . 6ISetter for a lens that can fail. When the field to which the lens points ) is not accessible this function returns . 7%Embed a total lens that points to an ‘ field into a lens that might  fail. 8Like 5> but return behaves like the identity function when the field  could not be set. 9Like 6> but return behaves like the identity function when the field  could not be set. 23Getter.  Modifier. 456789 23456789 2345679823456789 Safe-Inferred::Total lens type specialized for total accessor functions. ;2Create 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. :;Getter.  Modifier. <=>:;<=>:;<=>:;<=> Safe-Inferred?@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. AIModify a value with a function somewhere in the state, pointed to by the  specified lens. B Alias for @ that reads like an assignment. C Alias for A- that reads more or less like an assignment. D@Fetch a value pointed to by a lens out of a reader environment. EEExecute a computation in a modified environment. The lens is used to  point out the part to modify. FIModify a value with a function somewhere in the state, pointed to by the C specified lens. Additionally return a separate value based on the  modification. ?@ABCDEF?@ABCDEF?@AFBCDE?@ABCDEF NoneG2Create 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) H%Get the getter function from a lens. I'Get the modifier function from a lens. J%Get the setter function from a lens. GGetter.  Modifier. HIJ!"#%)GHIJGHJI!#"%)GHIJ None K#Lens pointing to the head of a list''s cons cell. (Partial and monomorphic) L#Lens pointing to the tail of a list''s cons cell. (Partial and monomorphic) MHLens pointing to the left value in an Either. (Partial and polymorphic) NILens pointing to the right value in an Either. (Partial and polymorphic) OALens pointing to the value in a Maybe. (Partial and polymorphic) PKLens pointing to the first component of a 2-tuple. (Total and polymorphic) QLLens pointing to the second component of a 2-tuple. (Total and polymorphic) ROPolymorphic lens that swaps the components of a tuple. (Total and polymorphic) SKLens pointing to the first component of a 3-tuple. (Total and polymorphic) TLLens pointing to the second component of a 3-tuple. (Total and polymorphic) UKLens pointing to the third component of a 3-tuple. (Total and polymorphic) VKPartial isomorphism for readable and showable values. Can easily be lifted  into a lens by using !. KLMNOPQRSTUV KLMNOPQRSTUV KLMNOPQRSTUV KLMNOPQRSTUV’    !"#$%&'()*+)*+ ,-./012     3 4 5 6 7 8 9 : ; < = >?@A?BCDEFGHIJKLMNOPQR?STUUVVWXXYZ[\]^_`abcdefghijklmnopqrstu?vw?vx?yz?y{| fclabels-2.0Data.Label.PointData.Label.PolyData.Label.MonoData.Label.DeriveData.Label.PartialData.Label.FailingData.Label.TotalData.Label.Monadic Data.LabelData.Label.Base ArrowFail failArrowFailingPartialTotalIsofwbwPointgetmodifysetidentitycomposeinvLenslenspointiso>-:~>:->mkLabelsmkLabel mkLabelsNamedgetLabel getLabelWith mkLabelsWith defaultNamingfclabelsembedmodify'set'getsputs=:=.askslocal modifyAndGetheadtailleftrightjustfstsndswapfst3snd3trd3readShowbase Control.Arrow ArrowZeroControl.CategoryCategory$fAlternativeKleisli$fApplicativeKleisli$fFunctorKleisli $fCategoryIsoconstcurryuncurry$fArrowFaileKleisli$fArrowFaileKleisli0$fAlternativePoint$fApplicativePoint$fFunctorPointunpack$fCategoryLensIdGHC.ShowShowTypingContextSubstFieldLabel LabelExpr LabelDeclmkLabelsWithForDecgenerateLabels groupFieldsconstructorFieldsprune unifiableCon unifiable generateLabelmodifiergettersetter computeTypes isMonomorphic typeVariablestypeFromBinderbinderFromTypemapTypeVariablesmapType substitutenameFromBindermapPred mapTyVarBndrpretty prettyTypereifyDecfclError Data.MaybeNothingMaybe Data.EitherLeftEither