papa-0.4.0: src/Papa.hs
{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE NoImplicitPrelude #-}
-- | Papa prelude - a curated Haskell prelude
--
-- This module re-exports the core prelude functionality. Many ecosystem packages
-- are not re-exported from this module to avoid name conflicts. Users should import
-- them qualified or directly as needed:
--
-- Containers:
-- > import qualified Papa.Containers.Data.Map as Map
-- > import qualified Papa.Containers.Data.Set as Set
--
-- Free structures:
-- > import qualified Papa.Free.Control.Monad.Free as Free
-- > import qualified Papa.Free.Control.Comonad.Cofree as Cofree
--
-- Other ecosystem packages (import qualified to avoid conflicts):
-- > import qualified Papa.Profunctors.Data.Profunctor as Profunctor
-- > import qualified Papa.Selective.Control.Selective as Selective
-- > import qualified Papa.Witherable.Witherable as Witherable
-- > import qualified Papa.Associative.Data.Associative as Associative
-- > import qualified Papa.One.Control.One as One
-- > import qualified Papa.Adjunctions.Data.Functor.Rep as Rep
-- > import qualified Papa.Comonad.Control.Comonad.Traced as Traced
-- > import qualified Papa.Id.Data.Id as Id
-- > import qualified Papa.Id.Data.BiId as BiId
-- > import qualified Papa.Polytree.Data.Polytree as Polytree
--
-- | Papa prelude — a comprehensive, type class-driven Haskell prelude
--
-- This module re-exports the core functionality. For additional modules,
-- import them directly:
--
-- == Aggregator Modules (import individually)
--
-- These modules aggregate related functionality and can be imported separately:
--
-- > import Papa.Comonad -- All comonad functionality
-- > import Papa.Contravariant -- Contravariant functors
-- > import Papa.Distributive -- Distributive functors
-- > import Papa.Adjunctions -- Adjunctions and representable functors
-- > import Papa.Associative -- Associative operations
-- > import Papa.One -- One type class
-- > import Papa.Polytree -- Polytree data structure
-- > import Papa.Profunctors -- Profunctor hierarchy
-- > import Papa.Selective -- Selective functors
-- > import Papa.Witherable -- Witherable and Filterable
--
-- == Renamed Modules (conflicts hidden)
--
-- For modules with naming conflicts, use the .Renamed versions:
--
-- > import Papa.Comonad.Renamed -- Hides First/Last/Alt/mconcat conflicts
-- > import Papa.Adjunctions.Renamed -- Hides 'index' conflict
-- > import Papa.Associative.Renamed -- Hides 'null'/'op' conflicts
-- > import Papa.One.Renamed -- Hides 'nonEmpty' conflict
-- > import Papa.Polytree.Renamed -- Hides 'levels' conflict
-- > import Papa.Profunctors.Renamed -- Hides 'WrappedArrow' conflict
-- > import Papa.Selective.Renamed -- Hides 'Over' conflict
-- > import Papa.Witherable.Renamed -- Hides 'filter' conflict
--
-- == Qualified Imports (internal conflicts)
--
-- Some modules have internal conflicts and must be imported qualified:
--
-- > import qualified Papa.Containers.Data.Map as Map
-- > import qualified Papa.Containers.Data.Set as Set
-- > import qualified Papa.Containers.Data.IntMap as IntMap
-- > import qualified Papa.Containers.Data.IntSet as IntSet
-- > import qualified Papa.Containers.Data.Seq as Seq
-- > import qualified Papa.Containers.Data.Tree as Tree
-- > import qualified Papa.Free.Control.Monad.Free as Free
-- > import qualified Papa.Free.Control.Applicative.Free as FreeAp
-- > import qualified Papa.Free.Control.Comonad.Cofree as Cofree
-- > import qualified Papa.Id.Data.Id as Id
-- > import qualified Papa.Id.Data.BiId as BiId
module Papa (
-- * Core Modules
module Papa.Base,
module Papa.Bifunctors,
module Papa.Comonad.Control.Comonad,
module Papa.Comonad.Control.Comonad.Env,
module Papa.Comonad.Control.Comonad.Store,
module Papa.Lens,
module Papa.LensIndexedPlated.Control.Lens.IndexedPlated,
module Papa.Semigroupoids,
) where
import Papa.Base
import Papa.Bifunctors
import Papa.Comonad.Control.Comonad
import Papa.Comonad.Control.Comonad.Env
import Papa.Comonad.Control.Comonad.Store
import Papa.Lens
import Papa.LensIndexedPlated.Control.Lens.IndexedPlated
import Papa.Semigroupoids