-- 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 -- --
-- 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)