{-# Language GADTs #-}
module Language.Drasil.Constraint (
Constraint(..), ConstraintE, ConstraintReason(..),
physc, sfwrc, isPhysC, isSfwrC
) where
import Language.Drasil.Expr.Lang
import Language.Drasil.Space (RealInterval(..))
data ConstraintReason = Physical | Software
type ConstraintE = Constraint Expr
data Constraint a where
Range :: ConstraintReason -> RealInterval a a -> Constraint a
physc :: RealInterval Expr Expr -> ConstraintE
physc :: RealInterval Expr Expr -> ConstraintE
physc = forall a. ConstraintReason -> RealInterval a a -> Constraint a
Range ConstraintReason
Physical
sfwrc :: RealInterval Expr Expr -> ConstraintE
sfwrc :: RealInterval Expr Expr -> ConstraintE
sfwrc = forall a. ConstraintReason -> RealInterval a a -> Constraint a
Range ConstraintReason
Software
isPhysC, isSfwrC :: Constraint e -> Bool
isPhysC :: forall e. Constraint e -> Bool
isPhysC (Range ConstraintReason
Physical RealInterval e e
_) = Bool
True
isPhysC Constraint e
_ = Bool
False
isSfwrC :: forall e. Constraint e -> Bool
isSfwrC (Range ConstraintReason
Software RealInterval e e
_) = Bool
True
isSfwrC Constraint e
_ = Bool
False