-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Helps when going "seed values" -> alternatives and optional -> answers
--
--
--
--
-- Types to support turning structured collections of seed values into
-- the same structures with alternatives along with some functions for
-- regular uses. Please see README.md for more information
@package subzero
@version 0.1.0.0
-- | Here is a longer description of this module, containing some
-- commentary with some markup.
module Control.Applicative.SubZero
-- | Converts 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.
--
-- The result is that two ZipLists of alternatives zip together,
-- providing alternatives to each point and two
--
-- Given the immediate utility of this, I do wonder if the Alternative
-- instance of Compose is the wrong one.
--
-- f = major functor g = superposition policy - how do they collapse? a =
-- transformed value type
data SubZero f g a
-- | Turns 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".
--
-- To represent that "no value" is a possible outcome, a should
-- be some type like (Maybe a) or (Either String a).
--
--
-- - f This functor defines the broad scale behaviours
-- but its Alternative instance is overridden. This in particular might
-- change during upcoming design validation.
-- - g This functor supplies the supercedent
-- Alternative instance and thus the finer behaviours.
--
points :: (Functor f, Alternative g) => (a -> Bool) -> f a -> SubZero f g a
foldlA1 :: (Foldable f, Alternative g) => (a -> a -> a) -> f a -> g a
letStand :: (Alternative f) => (a -> Bool) -> a -> f a
fromSubZero :: (Applicative f) => f a -> SubZero f Maybe a -> f a
collapse :: (Functor f, Foldable g, Alternative h) => (a -> a -> a) -> SubZero f g a -> SubZero f h a
instance (GHC.Base.Applicative g, GHC.Base.Applicative f) => GHC.Base.Applicative (Control.Applicative.SubZero.SubZero f g)
instance (GHC.Base.Functor g, GHC.Base.Functor f) => GHC.Base.Functor (Control.Applicative.SubZero.SubZero f g)
instance (GHC.Classes.Ord a, Data.Functor.Classes.Ord1 g, Data.Functor.Classes.Ord1 f) => GHC.Classes.Ord (Control.Applicative.SubZero.SubZero f g a)
instance (GHC.Classes.Eq a, Data.Functor.Classes.Eq1 g, Data.Functor.Classes.Eq1 f) => GHC.Classes.Eq (Control.Applicative.SubZero.SubZero f g a)
instance (GHC.Read.Read a, Data.Functor.Classes.Read1 g, Data.Functor.Classes.Read1 f) => GHC.Read.Read (Control.Applicative.SubZero.SubZero f g a)
instance (GHC.Show.Show a, Data.Functor.Classes.Show1 g, Data.Functor.Classes.Show1 f) => GHC.Show.Show (Control.Applicative.SubZero.SubZero f g a)
instance (GHC.Base.Applicative f, GHC.Base.Alternative g) => GHC.Base.Alternative (Control.Applicative.SubZero.SubZero f g)