module Lens.Simple (
    
    _1, _2
    , chosen
    , ix
    , at, intAt
    , contains, intContains
    
    
    , both
    , _Left, _Right
    , _Just, _Nothing
    , ignored
    
    
    , to, view, (^.)
    , folding, views, (^..), (^?)
    , toListOf, allOf, anyOf, firstOf, lastOf, sumOf, productOf
    , lengthOf, nullOf
    , backwards
    , over, (%~), set, (.~)
    , (&)
    
    
    , (+~), (*~), (-~), (//~), (&&~), (||~), (<>~)
    
    
    , zoom
    , use, uses
    , (%=)
    , assign, (.=)
    , (%%=)
    , (<~)
    
    
    , (+=), (-=), (*=)
    , (//=)
    , (&&=), (||=)
    , (<>=)
    
    
    , mapped
    
    
    , lens
    , iso
    , setting
    
    
    , choosing
    , alongside
    , beside
    
    , makeLenses
    , makeTraversals
    , makeLensesBy
    , makeLensesFor
    
    
    , LensLike, LensLike'
    , FoldLike, FoldLike'
    , ASetter, ASetter'
    , Phantom
    , Constant, Identity
    , AlongsideLeft, AlongsideRight
    , Zooming
    
    
    
    , Applicative, Foldable, Monoid
    , Backwards, All, Any, First, Last, Sum, Product
    , StateT, Writer
  ) where
import Lens.Family.Unchecked
import Lens.Family.Stock
import Lens.Family.State.Strict
import Lens.Family.TH (makeLenses, makeTraversals, makeLensesBy, makeLensesFor)
#if MIN_VERSION_base(4,8,0)
import Data.Function ((&))
import Lens.Family hiding (Fold,(&))
#else
import Lens.Family hiding (Fold)
#endif
infixl 1 ??
(??) :: Functor f => f (a -> b) -> a -> f b
ff ?? a = fmap ($ a) ff