data-elevator-0.1.0.0: src/Data/Elevator.hs
-- | Near zero-cost coercions between lifted and boxed unlifted types.
--
-- Turn any lifted type into an unlifted boxed type with 'Strict', eagerly
-- forcing any wrapped computation in the syntactic binding context.
--
-- Turn any unlifted boxed type into a lifted type with 'Lazy', suspending any
-- wrapped computation until the 'Lazy' is matched upon.
--
-- Re-use existing code by coercing functions that can be generalised according
-- to the levity polymorphism subkinding law @Unlifted <: Lifted@ with
-- 'levCoerce'.
module Data.Elevator
( UnliftedType, LiftedType
, Strict(Strict), Lazy(Lazy)
, levCoerce, LevitySubsumption(..)
) where
import Data.Elevator.Internal
import GHC.Exts