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

Rerefined.Predicate.Logical

Synopsis

Documentation

data LogicOp Source #

Logical binary operator.

No need to disambiguate that these are binary operators, because there's only one logical unary operator Not.

Constructors

And 
Or 
Nand 
Nor 
Xor 
Xnor 

data Logical (op :: LogicOp) l r Source #

A logical binary operation on two predicates.

Instances

Instances details
(Predicate l, Predicate r, ReifyLogicOp op) => Predicate (Logical op l r :: Type) Source # 
Instance details

Defined in Rerefined.Predicate.Logical

Methods

predicateName :: Proxy# (Logical op l r) -> Int -> ShowS Source #

(Refine l a, Refine r a, ReifyLogicOp op) => Refine (Logical op l r :: Type) a Source # 
Instance details

Defined in Rerefined.Predicate.Logical

Methods

validate :: Proxy# (Logical op l r) -> a -> Maybe (RefineFailure String) Source #

class ReifyLogicOp (op :: LogicOp) where Source #

Reify a logical binary operator type tag.

Methods

reifyLogicOpPretty :: String Source #

reifyLogicOp :: (String -> [a] -> Maybe a) -> Maybe a -> Maybe a -> Maybe a Source #

Instances

Instances details
ReifyLogicOp 'And Source # 
Instance details

Defined in Rerefined.Predicate.Logical

Methods

reifyLogicOpPretty :: String Source #

reifyLogicOp :: (String -> [a] -> Maybe a) -> Maybe a -> Maybe a -> Maybe a Source #

ReifyLogicOp 'Nand Source # 
Instance details

Defined in Rerefined.Predicate.Logical

Methods

reifyLogicOpPretty :: String Source #

reifyLogicOp :: (String -> [a] -> Maybe a) -> Maybe a -> Maybe a -> Maybe a Source #

ReifyLogicOp 'Nor Source # 
Instance details

Defined in Rerefined.Predicate.Logical

Methods

reifyLogicOpPretty :: String Source #

reifyLogicOp :: (String -> [a] -> Maybe a) -> Maybe a -> Maybe a -> Maybe a Source #

ReifyLogicOp 'Or Source # 
Instance details

Defined in Rerefined.Predicate.Logical

Methods

reifyLogicOpPretty :: String Source #

reifyLogicOp :: (String -> [a] -> Maybe a) -> Maybe a -> Maybe a -> Maybe a Source #

ReifyLogicOp 'Xnor Source # 
Instance details

Defined in Rerefined.Predicate.Logical

Methods

reifyLogicOpPretty :: String Source #

reifyLogicOp :: (String -> [a] -> Maybe a) -> Maybe a -> Maybe a -> Maybe a Source #

ReifyLogicOp 'Xor Source # 
Instance details

Defined in Rerefined.Predicate.Logical

Methods

reifyLogicOpPretty :: String Source #

reifyLogicOp :: (String -> [a] -> Maybe a) -> Maybe a -> Maybe a -> Maybe a Source #

data Not p Source #

Instances

Instances details
Predicate p => Predicate (Not p :: Type) Source # 
Instance details

Defined in Rerefined.Predicate.Logical

Methods

predicateName :: Proxy# (Not p) -> Int -> ShowS Source #

Refine p a => Refine (Not p :: Type) a Source # 
Instance details

Defined in Rerefined.Predicate.Logical