{-# LANGUAGE ConstraintKinds #-}
module Grisette.Unified.Internal.BaseConstraint
( BasicGrisetteType,
ConSymConversion,
)
where
import Control.DeepSeq (NFData)
import Data.Hashable (Hashable)
import Grisette.Internal.Core.Data.Class.EvalSym (EvalSym)
import Grisette.Internal.Core.Data.Class.ExtractSym (ExtractSym)
import Grisette.Internal.Core.Data.Class.Mergeable (Mergeable)
import Grisette.Internal.Core.Data.Class.PPrint (PPrint)
import Grisette.Internal.Core.Data.Class.SubstSym (SubstSym)
import Grisette.Internal.Core.Data.Class.SymEq (SymEq)
import Grisette.Internal.Core.Data.Class.SymOrd (SymOrd)
import Grisette.Internal.Core.Data.Class.ToCon (ToCon)
import Grisette.Internal.Core.Data.Class.ToSym (ToSym)
import Grisette.Internal.SymPrim.AllSyms (AllSyms)
import Language.Haskell.TH.Syntax (Lift)
type BasicGrisetteType t =
( AllSyms t,
Eq t,
EvalSym t,
ExtractSym t,
PPrint t,
Hashable t,
Lift t,
Mergeable t,
NFData t,
SymEq t,
Show t,
SymOrd t,
SubstSym t
)
type ConSymConversion conType symType t =
( ToCon t conType,
ToSym conType t,
ToCon symType t,
ToSym t symType
)