Îõ³h$ö¥;      !"#$%&'()*+,-./0123456789: Trustworthy .2>ÀÁÂÄÉÎW semialignIndexed version of  . semialign Analogous to  , but also provides an index.This should be the same as tabulate for representable functors. semialignIndexed version of  . semialign Analogous to  , but also provides an index. semialignIndexed version of . semialign Analogous to , but also provides an index. semialignRight inverse of  ."This class is definable for every ;. See .Laws 9uncurry zip (unzip xs) áD xs unzip (zip xs xs) áD (xs, xs) Note: 'unzip (zip xs ys) âD (xs, _) or (_, ys) ÀFor sequence-like types this holds, but for Map-like it doesn't.  semialign1Zippable functors supporting left and right unitsUnit >fst <$> zip xs (repeat y) áD xs snd <$> zip (repeat x) ys áD ys  semialignA repeat structure.  semialignFunctors supporting a  > operation that takes the intersection of non-uniform shapes.Minimal definition: either   or  . Idempotency join zip áD fmap (join (,))  Commutativity zip x y áD swap <$> zip y x  Associativity ,zip x (zip y z) áD assoc <$> zip (zip x y) z  Absorption »fst <$> zip xs (align xs ys) áD xs toThis <$> align xs (zip xs ys) áD This <$> xs where toThis (This a) = This a toThis (These a _) = This a toThis (That b) = That b With zipWith f a b áD f <$> zip a b  Functoriality 0zip (f <$> x) (g <$> y) áD bimap f g <$> zip x y  Zippyness Ðfmap fst (zip x x) áD x fmap snd (zip x x) áD x zip (fmap fst x) (fmap snd x) áD x Distributivity ™ align (zip xs ys) zs áD undistrThesePair <$> zip (align xs zs) (align ys zs) distrPairThese <$> zip (align xs ys) zs áD align (zip xs zs) (zip ys zs) zip (align xs ys) zs áD undistrPairThese <$> align (zip xs zs) (zip ys zs) Note, the following doesn't hold: ÊdistrThesePair <$> align (zip xs ys) zs âD zip (align xs zs) (align ys zs) when xs = [] and  ys = zs = [0]%, then the left hand side is "only" [(< 0, < 0)], but the right hand side is [(< 0, = 0 0)].  semialignèCombines two structures by taking the intersection of their shapes and using pair to hold the elements.  semialign÷Combines two structures by taking the intersection of their shapes and combining the elements with the given function. semialign.Alignable functors supporting an "inverse" to 4: splitting a union shape into its component parts.Laws Áuncurry align (unalign xs) áD xs unalign (align xs ys) áD (xs, ys) Compatibility note In version 1  was changed to return  (f a, f b) pair, instead of (f (Just a), f (Just b))5. Old behaviour can be achieved with if ever needed.>unzipWith (unalign . Just) [This 'a', That 'b', These 'c' 'd']9([Just 'a',Nothing,Just 'c'],[Nothing,Just 'b',Just 'd']) semialign A unit of .Laws 4(`align` nil) áD fmap This (nil `align`) áD fmap That  semialignAn empty structure.  ing with Ù will produce a structure with the same shape and elements as the other input, modulo > or <. semialignFunctors supporting an 7 operation that takes the union of non-uniform shapes.Minimal definition: either  or .Laws The laws of  and  Ò resemble lattice laws. There is a plenty of laws, but they are simply satisfied.And an addition property if f is Foldable, which tries to enforce /-feel: neither values are duplicated nor lost.Note: join f x = f x x Idempotency join align áD fmap (join These)  Commutativity align x y áD swap <$> align y x  Associativity 4align x (align y z) áD assoc <$> align (align x y) z With "alignWith f a b áD f <$> align a b  Functoriality 4align (f <$> x) (g <$> y) áD bimap f g <$> align x y  Alignedness, if f is Foldable âtoList x áD toListOf (folded . here) (align x y) áD mapMaybe justHere (toList (align x y)) And an addition property if f is Foldable, which tries to enforce /-feel: neither values are duplicated nor lost. âtoList x = toListOf (folded . here) (align x y) = mapMaybe justHere (toList (align x y))  semialign Analogous to  Ë, combines two structures by taking the union of their shapes and using = to hold the elements. semialign Analogous to  ô, combines two structures by taking the union of their shapes and combining the elements with the given function. semialign&Align two structures and combine with ?. semialignAlign two structures as in  , but filling in blanks with @. semialignAlign two structures as in  , but filling in blanks with @. semialign Left-padded  . semialign Left-padded  . semialign Right-padded  . semialign Right-padded  .A semialign  = liftA2 .  BSafe• TrustworthyÅ   Trustworthy TrustworthyQ semialignËBifoldable bifunctors supporting traversal through an alignable functor.Minimal definition:  bicrosswalk or  bisequenceL.Laws: àbicrosswalk (const empty) (const empty) = const empty bicrosswalk f g = bisequenceL . bimap f g " semialignÇFoldable functors supporting traversal through an alignable functor.Minimal definition:  crosswalk or  sequenceL.Laws: Ãcrosswalk (const nil) = const nil crosswalk f = sequenceL . fmap f  !"#$"#$ ! Trustworthy5ƒ /01 /01Ã      !"#$%&'()*+,-./01234566789:;<=>?@ABCDEFDEGDEHABIAJKLMÎ$semialign-1.2-LYgxqS2kQyS4QO2Bs66vcqData.Semialign.IndexedData.SemialignData.CrosswalkData.ZipData.Semialign.Internal Data.AlignRepeatWithIndexirepeat ZipWithIndexizipWithSemialignWithIndex ialignWithUnzip unzipWithunzipRepeatrepeatZipzipzipWithUnalignunalign unalignWithAlignnil Semialignalign alignWith unzipDefaultalignVectorWithsalignpadZip padZipWith lpadZipWithlpadZip rpadZipWithrpadZip Bicrosswalk bicrosswalk bisequenceL Crosswalk crosswalk sequenceL$fCrosswalkCompose$fCrosswalk(,)$fCrosswalkVector$fCrosswalkThese$fCrosswalkSeq $fCrosswalk[]$fCrosswalkMaybe$fCrosswalkIdentity$fBicrosswalkThese$fBicrosswalkEitherZippygetZippy$fApplicativeZippy $fApplyZippy $fMonoidZippy$fSemigroupZippy $fEqZippy $fOrdZippy $fShowZippy $fReadZippy$fFunctorZippybaseGHC.BaseFunctor$these-1.1.1.1-6XjzNoYrmuvAnu2xL5AC4F Data.TheseThatTheseThis<> GHC.MaybeNothing$fSemialignZipListoops