rerefined-0.1.0: Refinement types, again
Safe HaskellSafe-Inferred
LanguageGHC2021

Rerefined.Predicate.Relational.Value

Synopsis

Documentation

data CompareValue (op :: RelOp) (sign :: Sign) (n :: Natural) Source #

Compare value to a type-level Natural using the given RelOp.

Instances

Instances details
(Typeable op, Typeable sign, KnownNat n) => Predicate (CompareValue op sign n :: Type) Source # 
Instance details

Defined in Rerefined.Predicate.Relational.Value

Methods

predicateName :: Proxy# (CompareValue op sign n) -> Int -> ShowS Source #

(KnownNat n, Num a, Ord a, ReifyRelOp op, ReifySignedNat sign n, ReifySign sign) => Refine (CompareValue op sign n :: Type) a Source # 
Instance details

Defined in Rerefined.Predicate.Relational.Value

Methods

validate :: Proxy# (CompareValue op sign n) -> a -> Maybe (RefineFailure String) Source #

data Sign Source #

Constructors

Pos 
Neg 

class Typeable sign => ReifySign (sign :: Sign) where Source #

Instances

Instances details
ReifySign 'Neg Source # 
Instance details

Defined in Rerefined.Predicate.Relational.Value

ReifySign 'Pos Source # 
Instance details

Defined in Rerefined.Predicate.Relational.Value

class ReifySignedNat (sign :: Sign) (n :: Natural) where Source #

Methods

reifySignedNat :: (Num a, KnownNat n) => a Source #

Instances

Instances details
ReifySignedNat 'Neg n Source # 
Instance details

Defined in Rerefined.Predicate.Relational.Value

Methods

reifySignedNat :: (Num a, KnownNat n) => a Source #

ReifySignedNat 'Pos n Source # 
Instance details

Defined in Rerefined.Predicate.Relational.Value

Methods

reifySignedNat :: (Num a, KnownNat n) => a Source #