linear-base-0.2.0: src/Prelude/Linear/Generically.hs
{-# LANGUAGE LinearTypes #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Prelude.Linear.Generically
( Generically (..),
unGenerically,
Generically1 (..),
unGenerically1,
)
where
-- | A datatype whose instances are defined generically, using the
-- 'Generics.Linear.Generic' representation.
-- Generic instances can be derived via @'Generically' A@ using
-- @-XDerivingVia@.
newtype Generically a = Generically a
unGenerically :: Generically a %1 -> a
unGenerically (Generically a) = a
-- | A type whose instances are defined generically, using the
-- 'Generics.Linear.Generic1' representation. 'Generically1' is a higher-kinded
-- version of 'Generically'.
--
-- Generic instances can be derived for type constructors via
-- @'Generically1' F@ using @-XDerivingVia@.
newtype Generically1 f a = Generically1 (f a)
unGenerically1 :: Generically1 f a %1 -> f a
unGenerically1 (Generically1 fa) = fa