-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | nominal value with possible variations -- -- this package provides a Variation data type: a (mandatory) nominal -- value with possible associated variations on that nominal value. @package variation @version 0.1.1.0 module Data.Monoid1 -- | the class of containers with a "nil" element class Unit1 m empty1 :: Unit1 m => m a -- | the class of containers that can be combined regardless of type they -- contain class Append1 m append1 :: Append1 m => m a -> m a -> m a -- | the class of containers that form a Monoid regardless of the -- type they contain class (Unit1 m, Append1 m) => Monoid1 m instance Data.Monoid1.Unit1 [] instance Data.Monoid1.Unit1 Data.IntMap.Base.IntMap instance Data.Monoid1.Unit1 (Data.Map.Base.Map k) instance GHC.Base.Monoid a => Data.Monoid1.Unit1 (Data.Functor.Const.Const a) instance Data.Monoid1.Unit1 Data.Monoid.First instance Data.Monoid1.Unit1 Data.Monoid.Last instance Data.Monoid1.Append1 [] instance Data.Monoid1.Append1 Data.IntMap.Base.IntMap instance GHC.Classes.Ord k => Data.Monoid1.Append1 (Data.Map.Base.Map k) instance GHC.Base.Monoid a => Data.Monoid1.Append1 (Data.Functor.Const.Const a) instance Data.Monoid1.Append1 Data.Monoid.First instance Data.Monoid1.Append1 Data.Monoid.Last instance Data.Monoid1.Monoid1 [] instance Data.Monoid1.Monoid1 Data.IntMap.Base.IntMap instance GHC.Classes.Ord k => Data.Monoid1.Monoid1 (Data.Map.Base.Map k) instance GHC.Base.Monoid a => Data.Monoid1.Monoid1 (Data.Functor.Const.Const a) instance Data.Monoid1.Monoid1 Data.Monoid.First instance Data.Monoid1.Monoid1 Data.Monoid.Last instance Data.Monoid1.Unit1 m => Data.Monoid1.Unit1 (Control.Applicative.WrappedMonad m) instance Data.Monoid1.Append1 m => Data.Monoid1.Append1 (Control.Applicative.WrappedMonad m) instance Data.Monoid1.Monoid1 m => Data.Monoid1.Monoid1 (Control.Applicative.WrappedMonad m) module Data.Variation -- | the variation type contains -- -- -- -- it is strict in both arguments. -- -- the Applicative instance uses the Unit1 instance of -- f to define pure -- --
--   pure x = Variation x empty1
--   
-- -- and the Bind and Append1 instances of f to -- define <*> -- --
--   Variation f fs <*> Variation x xs =
--     Variation
--       (f x)
--       ((fs <.> xs) `append1` (f <$> xs) `append1` (($ x) <$> fs))
--   
-- -- the Monad instance uses the Bind instance of f -- (join) to collapse collections of type f (f a) -- --
--   joinV :: (Bind f, Monoid1 f) => Variation f (Variation f a) -> Variation f a
--   joinV (Variation (Variation nn nv) v) =
--     let vv = _variations <$> v
--         vn = _nominal <$> v
--     in Variation nn $ join vv `append1` vn `append1` nv
--   
-- -- other useful instances: -- --
--   instance Append1 f => Semigroup (Variation f a) where
--     (<>) = append1
--   
-- --
--   instance (Monoid a, Monoid1 f) => Monoid (Variation f a) where
--     mempty = Variation mempty empty1
--     mappend = (<>)
--   
data Variation f a Variation :: !a -> !(f a) -> Variation f a [_nominal] :: Variation f a -> !a [_variations] :: Variation f a -> !(f a) nominal :: Functor f => (a -> f a) -> Variation t a -> f (Variation t a) variations :: Functor f => (t a -> f (t a)) -> Variation t a -> f (Variation t a) instance Data.Traversable.Traversable f => Data.Traversable.Traversable (Data.Variation.Variation f) instance Data.Foldable.Foldable f => Data.Foldable.Foldable (Data.Variation.Variation f) instance GHC.Base.Functor f => GHC.Base.Functor (Data.Variation.Variation f) instance GHC.Generics.Generic (Data.Variation.Variation f a) instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData (f a)) => Control.DeepSeq.NFData (Data.Variation.Variation f a) instance (Data.Serialize.Serialize a, Data.Serialize.Serialize (f a)) => Data.Serialize.Serialize (Data.Variation.Variation f a) instance (Data.Functor.Bind.Class.Apply f, Data.Monoid1.Monoid1 f) => GHC.Base.Applicative (Data.Variation.Variation f) instance (Data.Functor.Bind.Class.Bind f, Data.Monoid1.Monoid1 f) => GHC.Base.Monad (Data.Variation.Variation f) instance Data.Monoid1.Append1 f => Data.Monoid1.Append1 (Data.Variation.Variation f) instance Data.Monoid1.Append1 f => Data.Semigroup.Semigroup (Data.Variation.Variation f a) instance (GHC.Base.Monoid a, Data.Monoid1.Monoid1 f) => GHC.Base.Monoid (Data.Variation.Variation f a) instance Data.Functor.Classes.Show1 f => Data.Functor.Classes.Show1 (Data.Variation.Variation f) instance (Data.Functor.Classes.Show1 f, GHC.Show.Show a) => GHC.Show.Show (Data.Variation.Variation f a)