-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Data layering utilities. Layer is a data-type which wrapps other one, but keeping additional information. If you want to access content of simple newtype object, use Lens.Wrapper instead. -- -- Data layering utilities. Layer is a data-type which wrapps other one, -- but keeping additional information. If you want to access content of -- simple newtype object, use Lens.Wrapper instead. @package data-layer @version 1.0.4 module Data.Layer class Layered l where layered = _Wrapped' layered :: Layered l => Lens' l (Unlayered l) class TransLayered l l' where transLayered = _Wrapped transLayered :: TransLayered l l' => Lens l l' (Unlayered l) (Unlayered l') class IsLayer l layer :: IsLayer l => Unlayered l -> l unlayer :: Layered l => l -> Unlayered l class LayeredM m l where viewLayeredM = return . unlayer setLayeredM = (fmap . fmap) return $ set layered viewLayeredM :: LayeredM m l => l -> m (Unlayered l) setLayeredM :: LayeredM m l => Unlayered l -> l -> m l unlayerM :: LayeredM m l => l -> m (Unlayered l) withLayeredM :: (LayeredM m a, Monad m) => (Unlayered a -> m (Unlayered a)) -> a -> m a withLayeredM' :: (LayeredM m a, Monad m) => (Unlayered a -> Unlayered a) -> a -> m a class LayerConstructor m l constructLayer :: LayerConstructor m l => (Unlayered l) -> m l module Data.Layer.Cover newtype Cover a Cover :: a -> Cover a class Covered a covered :: Covered a => Lens' a (Uncovered a) uncover :: Covered a => a -> Uncovered a class CoveredM m a viewCoveredM :: CoveredM m a => a -> m (Uncovered a) setCoveredM :: CoveredM m a => Uncovered a -> a -> m a class CoverConstructor m a constructCover :: CoverConstructor m a => Uncovered a -> m a class CoverConstructorFix m a constructCoverFix :: CoverConstructorFix m a => Uncovered a -> m a instance Data.Traversable.Traversable Data.Layer.Cover.Cover instance Data.Foldable.Foldable Data.Layer.Cover.Cover instance GHC.Base.Functor Data.Layer.Cover.Cover instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Layer.Cover.Cover a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Layer.Cover.Cover a) instance GHC.Show.Show a => GHC.Show.Show (Data.Layer.Cover.Cover a) instance Data.Layer.Layered (Data.Layer.Cover.Cover a) instance Control.Lens.Wrapped.Rewrapped (Data.Layer.Cover.Cover a) (Data.Layer.Cover.Cover a') instance Control.Lens.Wrapped.Wrapped (Data.Layer.Cover.Cover a) instance Data.Convert.Base.Castable a a' => Data.Convert.Base.Castable (Data.Layer.Cover.Cover a) (Data.Layer.Cover.Cover a') instance Data.Convert.Base.Convertible a a' => Data.Convert.Base.Convertible (Data.Layer.Cover.Cover a) (Data.Layer.Cover.Cover a') instance (Data.Layer.Layered a, Data.Layer.Cover.Covered (Data.Layer.Unlayered a), Data.Layer.Cover.Uncovered a ~ Data.Layer.Cover.Uncovered (Data.Layer.Unlayered a)) => Data.Layer.Cover.Covered a instance Data.Layer.Cover.Covered (Data.Layer.Cover.Cover a) instance (GHC.Base.Monad m, Data.Layer.LayeredM m a, Data.Layer.Cover.CoveredM m (Data.Layer.Unlayered a), Data.Layer.Cover.Uncovered a ~ Data.Layer.Cover.Uncovered (Data.Layer.Unlayered a)) => Data.Layer.Cover.CoveredM m a instance GHC.Base.Monad m => Data.Layer.Cover.CoveredM m (Data.Layer.Cover.Cover a) instance (Data.Layer.Cover.CoverConstructor m (Data.Layer.Unlayered a), Data.Layer.Cover.Uncovered a ~ Data.Layer.Cover.Uncovered (Data.Layer.Unlayered a), Data.Layer.LayerConstructor m a, GHC.Base.Monad m) => Data.Layer.Cover.CoverConstructor m a instance GHC.Base.Monad m => Data.Layer.Cover.CoverConstructor m (Data.Layer.Cover.Cover a) instance (Data.Layer.Cover.CoverConstructorFix m (Data.Layer.Unlayered a), Data.Layer.Cover.Uncovered a ~ Data.Layer.Cover.Uncovered (Data.Layer.Unlayered a), Data.Layer.LayerConstructor m a, Control.Monad.Fix.MonadFix m) => Data.Layer.Cover.CoverConstructorFix m a instance GHC.Base.Monad m => Data.Layer.Cover.CoverConstructorFix m (Data.Layer.Cover.Cover a) module Data.Layer.Immersed class Immersed l a immersed :: Immersed l a => Lens' l a class ImmersedM l m a viewImmersedM :: ImmersedM l m a => l -> m a instance Data.Layer.Immersed.Immersed l l instance (Data.Layer.Layered l, Data.Layer.Immersed.Immersed (Data.Layer.Unlayered l) a) => Data.Layer.Immersed.Immersed l a instance GHC.Base.Monad m => Data.Layer.Immersed.ImmersedM l m l instance (GHC.Base.Monad m, Data.Layer.LayeredM m l, Data.Layer.Immersed.ImmersedM (Data.Layer.Unlayered l) m a) => Data.Layer.Immersed.ImmersedM l m a module Data.Coat class Coated c where coated = _Wrapped coated :: Coated c => Lens (c a) (c a') a a' class IsCoat c where coat = layer coat :: IsCoat c => a -> c a uncoat :: Coated c => c a -> a class CoatedM m c viewCoatedM :: CoatedM m c => c a -> m a setCoatedM :: CoatedM m c => a -> c a -> m (c a) uncoatM :: CoatedM m c => c a -> m a withCoatedM :: (CoatedM m c, Monad m) => (a -> m a) -> c a -> m (c a) withCoatedM' :: (CoatedM m c, Monad m) => (a -> a) -> c a -> m (c a) class CoatConstructor a m c constructCoat :: CoatConstructor a m c => a -> m (c a) class CoatGenerator m c generateCoat :: CoatGenerator m c => a -> m (c a) module Data.Abstract class HasAbstract a where abstract = abstracted abstract :: HasAbstract a => Lens' a (Abstract a) class IsAbstract a abstracted :: IsAbstract a => Iso' a (Abstract a)