úÎ!4Ó1».      !"#$%&'()*+,-NoneSX (split-morphismOA normalizing optic, isomorphic to Prism but with different laws, specifically D needs not to be injective; i.e., distinct inputs may have the same * result, which combined with a subsequent  yields a normalized form for a$. Composition with stronger optics (. and /) yields another .split-morphism and ^, yielding a normalized formatted value. Subsequent getMaybe/reverseGet cycles are idempotent.split-morphismCompose with a Prism.split-morphismCompose with an Iso.split-morphismA Prism is trivially a Format.split-morphism%An Isomorphism is trivially a Format.  NoneSXÉ split-morphism7A split epimorphism, which we can think of as a weaker / a b where b‹ is a "smaller" type. So `get . reverseGet` remains an identity but `reverseGet . get` is merely idempotent (i.e., it normalizes values in a).#The following statements hold: -   is a "section" of  , -   is a "retraction" of  , - b is a "retract" of aY, - the pair `(get, reverseGet)` is a "splitting" of the idempotent `reverseGet . get`.split-morphismk`reverseGet . get`, yielding a normalized formatted value. Subsequent get/reverseGet cycles are idempotent.split-morphismCompose with another SplitEpi.split-morphismCompose with an Iso.split-morphism'An Isomorphism is trivially a SplitEpi.  NoneSX#nsplit-morphism8A split monomorphism, which we can think of as a weaker / a b where a‹ is a "smaller" type. So `reverseGet . get` remains an identity but `get . reverseGet` is merely idempotent (i.e., it normalizes values in b).#The following statements hold: -  is a "retraction" of , -  is a "section" of , - a is a "retract" of bY, - the pair `(reverseGet, get)` is a "splitting" of the idempotent `get . reverseGet`.split-morphismk`reverseGet . get`, yielding a normalized formatted value. Subsequent get/reverseGet cycles are idempotent.split-morphismCompose with another SplitMono.split-morphismCompose with an Iso.split-morphism(An Isomorphism is trivially a SplitMono.NoneSX+„split-morphismComposition of a  and a ƒ, yielding an even weaker structure where neither `reverseGet . get` and `get . reverseGet` is an identity but both are idempotent. split-morphism Normalize a via a round-trip through b.!split-morphism Normalize b via a round-trip through a."split-morphism Swapping  and  yields a Wedge.#split-morphismCompose with another Wedge.$split-morphismCompose with an Iso.%split-morphism$An Isomorphism is trivially a Wedge.  !"#$%  !"#$%NoneSX1 'split-morphism Swapping   and   yields a .(split-morphism Swapping  and  yields a  .)split-morphismComposition between  and  .*split-morphismComposition between   and .+split-morphismComposition between   and ..,split-morphismConversion from   to .-split-morphismConversion from  to .'()*+,-'(*+),-Safe1–012345678            !"#$%&$%'()*+,-./0-split-morphism-0.1.0.0-JyPYc7Mt9eiDuZKfows3B1Control.Lens.FormatControl.Lens.SplitEpiControl.Lens.SplitMonoControl.Lens.WedgeControl.Lens.SplitMorphism SplitMonoSplitEpiPaths_split_morphismFormatgetMaybe reverseGet normalize composePrism composeIso fromPrismfromIso$fInvariantFormatgetcomposeSplitEpi$fInvariantSplitEpicomposeSplitMono$fInvariantSplitMonoWedge normalizeA normalizeBreverse composeWedge$fInvariantWedge reverseEpi reverseMonocomposeSplitMonoEpicomposeSplitEpiMonocomposeSplitEpiPrism epiAsWedge monoAsWedge lens-4.17-5nQY5KghAWJ7MX35kYxrGvControl.Lens.TypePrismIsoversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName