{-# LANGUAGE Safe #-}

-- | Multiplicity polymorphic versions of @"GHC.Generics".'G.Generic'@ and
-- @"GHC.Generics".'G.Generic1'@. 'Generic' is otherwise identical to the
-- standard version. 'Generic1' is similar, but with modifications that
-- make it more efficient, as well as supporting linearity.
--
-- This module re-exports everything in "GHC.Generics" except 'G.Generic',
-- 'G.Generic1', 'G.Rec1', and 'G.:.:'. The 'Generic1' representations here
-- don't need 'G.Rec1'. We expose our own, identical, ':.:'. This allows
-- users to instantiate their 'Generic1'-based generic-deriving classes so
-- they can be used with /both/ "GHC.Generics" and this package.
--
-- In addition to the usual generic types, we export one called 'MP1' for
-- use with nonlinear and multiplicity polymorphic fields. Nonlinear
-- generic-deriving classes should almost always handle 'MP1' without
-- restriction. Some linear generic-deriving classes will need to constrain
-- its @m@ parameter to be ''GHC.Types.One'.
module Generics.Linear (module Generics.Linear.Class) where

import Generics.Linear.Class
import Generics.Linear.Instances ()