-- |
--
-- Module: Optics.Core
-- Description: The core optics functionality re-exported.
--
-- See the @Optics@ module in the main @optics@ package for overview
-- documentation.
--
module Optics.Core
  (
  -- * Basic definitions
    module Optics.Optic

  -- * Kinds of optic
  , module O

  -- * Indexed optics
  , module I

  -- * Overloaded labels
  , module Optics.Label

  -- * Combinators
  , module P

  -- * Optics for basic data types
  , module D
  )
  where

import Optics.AffineFold                       as O
import Optics.AffineTraversal                  as O
import Optics.Fold                             as O
import Optics.Getter                           as O
import Optics.Iso                              as O
import Optics.IxAffineFold                     as O
import Optics.IxAffineTraversal                as O
import Optics.IxFold                           as O
import Optics.IxGetter                         as O
import Optics.IxLens                           as O
import Optics.IxSetter                         as O
import Optics.IxTraversal                      as O
import Optics.Lens                             as O
import Optics.ReversedLens                     as O
import Optics.Prism                            as O
import Optics.ReversedPrism                    as O
import Optics.Review                           as O
import Optics.Setter                           as O
import Optics.Traversal                        as O

import Optics.Indexed.Core                     as I

import Optics.Arrow                            as P
import Optics.At.Core                          as P
import Optics.Coerce                           as P
import Optics.Cons.Core                        as P
import Optics.Each.Core                        as P
import Optics.Empty.Core                       as P
import Optics.Generic                          as P
import Optics.Mapping                          as P
import Optics.Operators                        as P
import Optics.Re                               as P
import Optics.ReadOnly                         as P

import Optics.Label
import Optics.Optic

import Data.Either.Optics                      as D
import Data.Maybe.Optics                       as D
import Data.Tuple.Optics                       as D