{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveLift #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE TypeFamilyDependencies #-}
module Grisette.Internal.Unified.EvalModeTag
( EvalModeTag (..),
IsConMode,
)
where
import Language.Haskell.TH.Syntax (Lift)
data EvalModeTag = C | S deriving ((forall (m :: * -> *). Quote m => EvalModeTag -> m Exp)
-> (forall (m :: * -> *).
Quote m =>
EvalModeTag -> Code m EvalModeTag)
-> Lift EvalModeTag
forall t.
(forall (m :: * -> *). Quote m => t -> m Exp)
-> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
forall (m :: * -> *). Quote m => EvalModeTag -> m Exp
forall (m :: * -> *). Quote m => EvalModeTag -> Code m EvalModeTag
$clift :: forall (m :: * -> *). Quote m => EvalModeTag -> m Exp
lift :: forall (m :: * -> *). Quote m => EvalModeTag -> m Exp
$cliftTyped :: forall (m :: * -> *). Quote m => EvalModeTag -> Code m EvalModeTag
liftTyped :: forall (m :: * -> *). Quote m => EvalModeTag -> Code m EvalModeTag
Lift, Int -> EvalModeTag -> ShowS
[EvalModeTag] -> ShowS
EvalModeTag -> String
(Int -> EvalModeTag -> ShowS)
-> (EvalModeTag -> String)
-> ([EvalModeTag] -> ShowS)
-> Show EvalModeTag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EvalModeTag -> ShowS
showsPrec :: Int -> EvalModeTag -> ShowS
$cshow :: EvalModeTag -> String
show :: EvalModeTag -> String
$cshowList :: [EvalModeTag] -> ShowS
showList :: [EvalModeTag] -> ShowS
Show, EvalModeTag -> EvalModeTag -> Bool
(EvalModeTag -> EvalModeTag -> Bool)
-> (EvalModeTag -> EvalModeTag -> Bool) -> Eq EvalModeTag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EvalModeTag -> EvalModeTag -> Bool
== :: EvalModeTag -> EvalModeTag -> Bool
$c/= :: EvalModeTag -> EvalModeTag -> Bool
/= :: EvalModeTag -> EvalModeTag -> Bool
Eq)
type family IsConMode (mode :: EvalModeTag) = (r :: Bool) | r -> mode where
IsConMode 'C = 'True
IsConMode 'S = 'False