úÎ     "SubZero type and related functions(c) Tristan Wibberley, 2017GPL-2tristan.wibberley@gmail.com experimentalNoneIEConverts a functor so that each point at the source has alternatives.±It's just like Compose but the applicative instance appends new alternative values in the rightmost (inner/minor) functor instead of in the leftmost (outer/major) functor.mThe result is that two ZipLists of alternatives zip together, providing alternatives to each point and twolGiven the immediate utility of this, I do wonder if the Alternative instance of Compose is the wrong one.af = major functor g = superposition policy - how do they collapse? a = transformed value typeiTurns a container of values to a container of either retained or destroyed values based on a predicate¯The type constraint allows us to model possible outcomes so destroyed values are just "no possible outcomes" while retained values represent "the only possible outcome".4To represent that "no value" is a possible outcome, a should be some type like (  a) or (  a). f¼This functor defines the broad scale behaviours but its Alternative instance is overridden. This in particular might change during upcoming design validation.gcThis functor supplies the supercedent Alternative instance and thus the finer behaviours. XA predicate that indicates whether a point is occupied by its original value or vacant."The seed points with their values.The constructed SubZero value.     &subzero-0.1.0.0-8yg4ot7avuWK3KY09iKGfTControl.Applicative.SubZeroSubZerofoldlA1letStandpoints fromSubZerocollapse$fAlternativeSubZero $fShowSubZero $fReadSubZero $fEqSubZero $fOrdSubZero$fFunctorSubZero$fApplicativeSubZerobaseGHC.BaseMaybe Data.EitherEitherString getSubZero