-- 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.2 module Data.Layer class Layered l where layered = _Wrapped' layered :: Layered l => Lens' 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 module Data.Layer.Coat newtype Coat a Coat :: a -> Coat a class Coated a coated :: Coated a => Lens' a (Uncoated a) uncoat :: Coated a => a -> Uncoated a class CoatedM m a viewCoatedM :: CoatedM m a => a -> m (Uncoated a) setCoatedM :: CoatedM m a => Uncoated a -> a -> m a class CoatConstructor m a constructCoat :: CoatConstructor m a => Uncoated a -> m a instance Data.Traversable.Traversable Data.Layer.Coat.Coat instance Data.Foldable.Foldable Data.Layer.Coat.Coat instance GHC.Base.Functor Data.Layer.Coat.Coat instance GHC.Show.Show a => GHC.Show.Show (Data.Layer.Coat.Coat a) instance Data.Layer.Layered (Data.Layer.Coat.Coat a) instance Control.Lens.Wrapped.Rewrapped (Data.Layer.Coat.Coat a) (Data.Layer.Coat.Coat a') instance Control.Lens.Wrapped.Wrapped (Data.Layer.Coat.Coat a) instance (Data.Layer.Layered a, Data.Layer.Coat.Coated (Data.Layer.Unlayered a), Data.Layer.Coat.Uncoated a ~ Data.Layer.Coat.Uncoated (Data.Layer.Unlayered a)) => Data.Layer.Coat.Coated a instance Data.Layer.Coat.Coated (Data.Layer.Coat.Coat a) instance (GHC.Base.Monad m, Data.Layer.LayeredM m a, Data.Layer.Coat.CoatedM m (Data.Layer.Unlayered a), Data.Layer.Coat.Uncoated a ~ Data.Layer.Coat.Uncoated (Data.Layer.Unlayered a)) => Data.Layer.Coat.CoatedM m a instance GHC.Base.Monad m => Data.Layer.Coat.CoatedM m (Data.Layer.Coat.Coat a) instance (GHC.Base.Monad m, Data.Layer.Coat.CoatConstructor m (Data.Construction.Destructed a), Data.Layer.Coat.Uncoated a ~ Data.Layer.Coat.Uncoated (Data.Construction.Destructed a), Data.Construction.Constructor m a) => Data.Layer.Coat.CoatConstructor m a instance GHC.Base.Monad m => Data.Layer.Coat.CoatConstructor m (Data.Layer.Coat.Coat 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