{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE StandaloneKindSignatures #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE ExplicitForAll #-}
module Dep.Tagged
(
Tagged (..),
tagged,
untag
)
where
import Data.Kind
import Data.Typeable
import GHC.Generics qualified as G
type Tagged :: k -> ((Type -> Type) -> Type) -> (Type -> Type) -> Type
newtype Tagged s r_ m = Tagged {Tagged s r_ m -> r_ m
unTagged :: r_ m}
deriving
(
(forall x. Tagged s r_ m -> Rep (Tagged s r_ m) x)
-> (forall x. Rep (Tagged s r_ m) x -> Tagged s r_ m)
-> Generic (Tagged s r_ m)
forall x. Rep (Tagged s r_ m) x -> Tagged s r_ m
forall x. Tagged s r_ m -> Rep (Tagged s r_ m) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall k (s :: k) (r_ :: (* -> *) -> *) (m :: * -> *) x.
Rep (Tagged s r_ m) x -> Tagged s r_ m
forall k (s :: k) (r_ :: (* -> *) -> *) (m :: * -> *) x.
Tagged s r_ m -> Rep (Tagged s r_ m) x
$cto :: forall k (s :: k) (r_ :: (* -> *) -> *) (m :: * -> *) x.
Rep (Tagged s r_ m) x -> Tagged s r_ m
$cfrom :: forall k (s :: k) (r_ :: (* -> *) -> *) (m :: * -> *) x.
Tagged s r_ m -> Rep (Tagged s r_ m) x
G.Generic,
Typeable
)
tagged :: forall s r_ m . r_ m -> Tagged s r_ m
tagged :: r_ m -> Tagged s r_ m
tagged = r_ m -> Tagged s r_ m
forall k (s :: k) (r_ :: (* -> *) -> *) (m :: * -> *).
r_ m -> Tagged s r_ m
Tagged
untag :: Tagged s r_ m -> r_ m
untag :: Tagged s r_ m -> r_ m
untag = Tagged s r_ m -> r_ m
forall k (s :: k) (r_ :: (* -> *) -> *) (m :: * -> *).
Tagged s r_ m -> r_ m
unTagged