úÎ;o5iA      !"#$%&'()*+,-./0123456789:;<=>?@None  pure Iso a partial Isomorphism A wrapper for a more (->)-like Functor instances KAn Isomorphism or one-to-one mapping between types. These are very similar  to a LensC, but are not dependent on context, making them more flexible. The N functions also alow a Monadic context, supporting partial isomorphisms, and " other interesting functionality. A more categorical A, with wrapping /! unwrapping for convenience. See  also the B instances for . % ifmap = fromPure . C.fmap . IsoPure Unwrap and make polymorphic an  See also an Iso wrapped in Dual apply the forward function " i $- a = runIdentity $ apply i a apply the backward function $ i -$ b = runIdentity $ unapply i b Calls C on the empty list. ? DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef    : DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef Safe-InferedJa lens that can fail in the Maybe monad on the outer type. Suitable for a ; normal lens on a multi-constructor type. The more general $, #, etc.  can be used with this type. 5a simple lens, suitable for single-constructor types GA lens in which the setter returns its result in the trivial identity P monad. This is appropriate e.g. for traditional partial lenses, where there is 2 a potential that the lens could fail only on the outer constructor. "/Create a monadic lens from a getter and setter #Hget, returning the result in a Monadic environment. This is appropriate J e.g. for traditional partial lenses on multi-constructor types. See also  $ $'set, returning the result in the getter' s Monadic environment, running  the setter's trivial Identity monad. %(modify the inner value within the getter's Monadic environment '0Create a monadic Lens from a setter and getter. 1 lensMW g s = Lens $ \a-> liftM2 (,) (s a) (g a) (set, with Monadic setter & pure getter )set, ging the outer (getter'&s) Monadic environment to the type of  the setter monad transformer. * set, like ) but we g the inner setter's environment to % the outer getter monad transformer. +Jset, combining the effects of the identical setter and getter Monads with  h. .codiag from Cartesian  eitherL = id ||| id 2Convert an isomorphism to a  3,Create a pure Lens from a getter and setter 5 lens g = lensM (fmap return g) . fmap (fmap return) 4'Run the getter function of a pure lens  get l = runIdentity . getM l 5'Run the getter function of a pure lens " set l b = runIdentity . setM l b 7#Set an inner value on an initially i value.  setZero l b = set l b mzero 8  setZeroM l b = setM l b mzero 9 ! setEmptyW l b = setW l b mempty :  (^$) = get ;  ma ^>>= l = ma >>= getM l , !"#$%&'()*+,-./0123456789:;jklmnopqrstu  !"#$%&'()*+,-./0123456789:;  !3456"#$%'(&)*+789,-./012:;* !"#$%&'()*+,-./0123456789:;jklmnopqrstu Safe-Infered<'Run the getter function of a pure lens =/Create a partial lens from a getter and setter >+Try to run the getter function on a value ??try to run the setter function on an outer and new inner value @(try to modify the inner type of a value <=>?@ 356<=>?@ 3<56=>?@<=>?@v      !!"#$%&'()*+,-./0123456789:;<5#$%&=>?@AB=>CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi=jk=lmnopqrstuvwxyzyall-0.1 Data.Yall.IsoData.Yall.Lens Data.Yall:<->:<~>IsoPureisoPureIsoapplyunapplyifmapfromPure distributeIfactorIinverseIiso$--$wordsIlinesIshowIcurryIenumIintegerI rationalIzipI incrementI incrementByIconsI:~>:->LensMLensrunLenslensMgetMsetMmodifyMmodifyWlensMWsetWsetLiftMsetLiftWsetJoinfstLsndLeitherL|||factorL distributeLisoLlensgetsetmodifysetEmpty setEmptyM setEmptyW^$^>>=baseGHC.Basefmapcategories-0.59Control.Categorical.FunctorFunctorfail$fComonoidalIso(,)$fMonoidalIso(,)$fSymmetricIsoEither$fSymmetricIso(,)$fBraidedIsoEither$fBraidedIso(,)$fDisassociativeIsoEither$fDisassociativeIso(,)$fAssociativeIsoEither$fAssociativeIso(,)$fBifunctorEitherIsoIsoIso$fQFunctorEitherIsoIso$fPFunctorEitherIsoIso$fBifunctor(,)IsoIsoIso$fQFunctor(,)IsoIso$fPFunctor(,)IsoIso$fFunctormIsoIso$fFunctorfIsoPureIsoPure$fComonoidalIsoPure(,)$fMonoidalIsoPure(,)$fSymmetricIsoPure(,)$fSymmetricIsoPureEither$fBraidedIsoPureEither$fBraidedIsoPure(,)$fDisassociativeIsoPureEither$fDisassociativeIsoPure(,)$fAssociativeIsoPureEither$fAssociativeIsoPure(,)&$fBifunctorEitherIsoPureIsoPureIsoPure$fQFunctorEitherIsoPureIsoPure$fPFunctorEitherIsoPureIsoPure#$fBifunctor(,)IsoPureIsoPureIsoPure$fQFunctor(,)IsoPureIsoPure$fPFunctor(,)IsoPureIsoPure $fCategoryIsotransformers-0.3.0.0Control.Monad.Trans.Classlift Control.Monadjoin Data.Monoidmempty$fComonoidalLens(,)$fMonoidalLens(,)$fSymmetricLens(,)$fBraidedLens(,)$fDisassociativeLens(,)$fAssociativeLens(,)$fHasTerminalObjectLens$fFunctormLensLens$fBifunctor(,)LensLensLens$fQFunctor(,)LensLens$fPFunctor(,)LensLens$fCategoryLens