úÎ!N Jw5      !"#$%&'()*+,-./01234 Trustworthy?¶ semialignRight inverse of  ."This class is definable for every 5. See .Laws 9uncurry zip (unzip xs) "a xs unzip (zip xs xs) "a (xs, xs) Note: 'unzip (zip xs ys) "b (xs, _) or (_, ys) @For sequence-like types this holds, but for Map-like it doesn't. semialign A unit of  . :fst <$> zip xs (full y) "a xs snd <$> zip (full x) ys "a ys  semialignA full strucutre. semialign.Alignable functors supporting an "inverse" to  4: splitting a union shape into its component parts.Laws Auncurry align (unalign xs) "a xs unalign (align xs ys) "a (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) "a fmap This (nil `align`) "a fmap That  semialignAn empty structure.   ing with  Y will produce a structure with the same shape and elements as the other input, modulo 6 or 7.  semialignFunctors supporting a   and  I operations that takes the intersection and union of non-uniform shapes.Minimal definition: either   or   and either   or .Laws The laws of   and  R resemble lattice laws. There is a plenty of laws, but they are simply satisfied.And an addition property if f is 8, which tries to enforce  /-feel: neither values are duplicated nor lost.Note: join f x = f x x Idempotency <join align "a fmap (join These) join zip "a fmap (join (,))  Commutativity <align x y "a swap <$> align y x zip x y "a swap <$> zip y x  Associativity dalign x (align y z) "a assoc <$> align (align x y) z zip x (zip y z) "a assoc <$> zip (zip x y) z  Absorption »fst <$> zip xs (align xs ys) "a xs toThis <$> align xs (zip xs ys) "a This <$> xs where toThis (This a) = This a toThis (These a _) = This a toThis (That b) = That b With BalignWith f a b "a f <$> align a b zipWith f a b "a f <$> zip a b  Functoriality falign (f <$> x) (g <$> y) "a bimap f g <$> align x y zip (f <$> x) (g <$> y) "a bimap f g <$> zip x y  Zippyness Pfmap fst (zip x x) "a x fmap snd (zip x x) "a x zip (fmap fst x) (fmap snd x) "a x  Alignedness, if f is 8 btoList x "a toListOf (folded . here) (align x y) "a mapMaybe justHere (toList (align x y)) Distributivity ÿ align (zip xs ys) zs "a undistrThesePair <$> zip (align xs zs) (align ys zs) distrPairThese <$> zip (align xs ys) zs "a align (zip xs zs) (zip ys zs) zip (align xs ys) zs "a undistrPairThese <$> align (zip xs zs) (zip ys zs) Note, the following doesn't hold: JdistrThesePair <$> align (zip xs ys) zs "b zip (align xs zs) (align ys zs) when xs = [] and  ys = zs = [0]%, then the left hand side is "only" [(7 0, 7 0)], but the right hand side is [(7 0, 9 0 0)].  semialign Analogous to  K, combines two structures by taking the union of their shapes and using 9 to hold the elements.  semialign Analogous to t, combines two structures by taking the union of their shapes and combining the elements with the given function.  semialigngCombines to structures by taking the intersection of their shapes and using pair to hold the elements. semialignvCombines to structures by taking the intersection of their shapes and combining the elements with the given function. semialign&Align two structures and combine with :.See .  will be deprecated after ; becomes a super class of < 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  .? semialign = liftA2 .  @ Trustworthy@q      TrustworthyA‹      TrustworthyIq semialignKBifoldable 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  semialignGFoldable functors supporting traversal through an alignable functor.Minimal definition:  crosswalk or  sequenceL.Laws: Ccrosswalk (const nil) = const nil crosswalk f = sequenceL . fmap f  Trustworthy4J  )*+  )*+A      !"#$%&'()*+,-.//0123456789:;<=>?=>@:AB=>C:;D:;E:;F:;G:HIJKL"semialign-1-6absbFyPUCfKVnb7A12omjData.SemialignData.CrosswalkData.ZipData.Semialign.Internal Data.AlignUnzip unzipWithunzipZipfullUnalignunalign unalignWithAlignnil Semialignalign alignWithzipzipWith unzipDefaultalignVectorWithmalignsalignpadZip 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.BaseFunctorthese-1-DmYu2NUUPvAE1GOt7rqe8V Data.TheseThisThat Data.FoldableFoldableThesemappend SemigroupMonoid<> GHC.MaybeNothing$fSemialignZipListoops