-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Miscellaneous lens utilities.
--   
--   Handy functions when using lens.
@package lens-misc
@version 0.0.2.0

module Control.Lens.Misc.TH

-- | type restricted version of <a>over</a>
over' :: ASetter' s a -> (a -> a) -> s -> s

-- | A <a>LensRules</a> used by <a>makeClassy_'</a>.
classyRules_' :: LensRules

-- | Make lenses and traversals for a type, and create a class when the
--   type has no arguments. Works the same as <a>makeClassy_</a> except
--   that the resulting *classy* lens is also prefixed with an underscore.
makeClassy_' :: Name -> DecsQ

-- | A <a>LensRules</a> used by <a>makeLenses_</a>.
lensRules_ :: LensRules

-- | Build lenses (and traversals) with a sensible default configuration.
--   Works the same as <a>makeLenses</a> except that the resulting lens is
--   also prefixed with an underscore.
--   
--   <i>e.g.</i>
--   
--   <pre>
--   data FooBar
--     = Foo { x, y :: <a>Int</a> }
--     | Bar { x :: <a>Int</a> }
--   <a>makeLenses</a> ''FooBar
--   </pre>
--   
--   will create
--   
--   <pre>
--   _x :: <a>Lens'</a> FooBar <a>Int</a>
--   _x f (Foo a b) = (\a' -&gt; Foo a' b) &lt;$&gt; f a
--   _x f (Bar a)   = Bar &lt;$&gt; f a
--   _y :: <a>Traversal'</a> FooBar <a>Int</a>
--   _y f (Foo a b) = (\b' -&gt; Foo a  b') &lt;$&gt; f b
--   _y _ c@(Bar _) = pure c
--   </pre>
--   
--   <pre>
--   <a>makeLenses_</a> = <a>makeLensesWith</a> <a>lensRules_</a>
--   </pre>
makeLenses_ :: Name -> DecsQ

module Control.Lens.Misc.Tagged
_Tagged' :: Iso' (Tagged t a) a
_Tagged :: Iso (Tagged t a) (Tagged t b) a b

module Control.Lens.Misc
