module Control.Effect.Carrier
  ( -- * Core types
    Carrier(..)

  , Algebra
  , Algebra'

  , Reformulation
  , Reformulation'

    -- * Combinators for 'Algebra's
  , powerAlg
  , powerAlg'
  , weakenAlg
  , coerceAlg

   -- * Combinators for 'Reformulation's
  , liftReform
  , addDeriv
  , addPrim
  , weakenReform
  , weakenReformUnder1
  , weakenReformUnder
  , weakenReformUnderMany
  , coerceReform

    -- * Hiding effects
  , StripPrefix

    -- * Type Coercion
  , module Data.Coerce

    -- * Common classes for newtype deriving
  , module Control.Effect.Internal.Derive

    -- * Primitive effects
  , module Control.Effect.Primitive

    -- * Union
  , module Control.Effect.Union
  ) where

import Data.Coerce
import Control.Effect
import Control.Effect.Internal
import Control.Effect.Primitive
import Control.Effect.Union
import Control.Effect.Internal.Derive
import Control.Effect.Internal.KnownList
import Control.Effect.Internal.Union
import Control.Effect.Carrier.Internal.Interpret