control-invariants-0.1.0.0: Invariants and contract monitoring

Safe HaskellNone
LanguageHaskell2010

Control.Invariant

Contents

Documentation

class Show a => HasInvariant a where Source #

Minimal complete definition

invariant

Methods

invariant :: a -> Invariant Source #

updateCache :: a -> a Source #

Instances

(Functor f, Show a, Show1 f, Show1 g, HasInvariant (f (g a))) => HasInvariant (Compose * * f g a) Source # 

Methods

invariant :: Compose * * f g a -> Invariant Source #

updateCache :: Compose * * f g a -> Compose * * f g a Source #

data Checked a Source #

Instances

Functor Checked Source # 

Methods

fmap :: (a -> b) -> Checked a -> Checked b #

(<$) :: a -> Checked b -> Checked a #

Foldable Checked Source # 

Methods

fold :: Monoid m => Checked m -> m #

foldMap :: Monoid m => (a -> m) -> Checked a -> m #

foldr :: (a -> b -> b) -> b -> Checked a -> b #

foldr' :: (a -> b -> b) -> b -> Checked a -> b #

foldl :: (b -> a -> b) -> b -> Checked a -> b #

foldl' :: (b -> a -> b) -> b -> Checked a -> b #

foldr1 :: (a -> a -> a) -> Checked a -> a #

foldl1 :: (a -> a -> a) -> Checked a -> a #

toList :: Checked a -> [a] #

null :: Checked a -> Bool #

length :: Checked a -> Int #

elem :: Eq a => a -> Checked a -> Bool #

maximum :: Ord a => Checked a -> a #

minimum :: Ord a => Checked a -> a #

sum :: Num a => Checked a -> a #

product :: Num a => Checked a -> a #

Traversable Checked Source # 

Methods

traverse :: Applicative f => (a -> f b) -> Checked a -> f (Checked b) #

sequenceA :: Applicative f => Checked (f a) -> f (Checked a) #

mapM :: Monad m => (a -> m b) -> Checked a -> m (Checked b) #

sequence :: Monad m => Checked (m a) -> m (Checked a) #

Eq1 Checked Source # 

Methods

liftEq :: (a -> b -> Bool) -> Checked a -> Checked b -> Bool #

Show1 Checked Source # 

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Checked a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Checked a] -> ShowS #

Eq a => Eq (Checked a) Source # 

Methods

(==) :: Checked a -> Checked a -> Bool #

(/=) :: Checked a -> Checked a -> Bool #

Ord a => Ord (Checked a) Source # 

Methods

compare :: Checked a -> Checked a -> Ordering #

(<) :: Checked a -> Checked a -> Bool #

(<=) :: Checked a -> Checked a -> Bool #

(>) :: Checked a -> Checked a -> Bool #

(>=) :: Checked a -> Checked a -> Bool #

max :: Checked a -> Checked a -> Checked a #

min :: Checked a -> Checked a -> Checked a #

Show a => Show (Checked a) Source # 

Methods

showsPrec :: Int -> Checked a -> ShowS #

show :: Checked a -> String #

showList :: [Checked a] -> ShowS #

(HasInvariant a, Arbitrary a) => Arbitrary (Checked a) Source # 

Methods

arbitrary :: Gen (Checked a) #

shrink :: Checked a -> [Checked a] #

NFData a => NFData (Checked a) Source # 

Methods

rnf :: Checked a -> () #

Controls (Checked a) a Source # 

Methods

content' :: Getter (Checked a) a Source #

HasInvariant a => IsChecked (Checked a) a Source # 

Methods

check :: a -> Checked a Source #

check' :: a -> Checked a Source #

content :: Iso' (Checked a) a Source #

Controls (Compose * * Checked f a) (f a) Source # 

Methods

content' :: Getter (Compose * * Checked f a) (f a) Source #

HasInvariant (f a) => IsChecked (Compose * * Checked f a) (f a) Source # 

Methods

check :: f a -> Compose * * Checked f a Source #

check' :: f a -> Compose * * Checked f a Source #

content :: Iso' (Compose * * Checked f a) (f a) Source #

class HasInvariant b => IsChecked a b | a -> b where Source #

Minimal complete definition

check, check', content

Methods

check :: Pre => b -> a Source #

check' :: Pre => b -> a Source #

content :: Pre => Iso' a b Source #

Instances

HasInvariant a => IsChecked (Checked a) a Source # 

Methods

check :: a -> Checked a Source #

check' :: a -> Checked a Source #

content :: Iso' (Checked a) a Source #

HasInvariant (f a) => IsChecked (Compose * * Checked f a) (f a) Source # 

Methods

check :: f a -> Compose * * Checked f a Source #

check' :: f a -> Compose * * Checked f a Source #

content :: Iso' (Compose * * Checked f a) (f a) Source #

mutate :: (IsChecked c a, Pre) => c -> State a k -> c Source #

mutate' :: (IsChecked c a, Monad m, Pre) => StateT a m k -> StateT c m k Source #

create' :: (IsChecked c a, Default a, Pre) => State a k -> c Source #

class Controls a b | a -> b where Source #

Methods

content' :: Getter a b Source #

content' :: a ~ b => Getter a b Source #

Instances

Controls (Checked a) a Source # 

Methods

content' :: Getter (Checked a) a Source #

Controls (Compose * * Checked f a) (f a) Source # 

Methods

content' :: Getter (Compose * * Checked f a) (f a) Source #

view' :: (Controls a b, MonadReader a m) => Getting c b c -> m c Source #

(!.) :: Controls a b => a -> Getting c b c -> c infixl 8 Source #

views' :: (Controls a b, MonadReader a m) => Getting d b c -> (c -> d) -> m d Source #

use' :: (Controls a b, MonadState a m) => Getting c b c -> m c Source #

uses' :: (Controls a b, MonadState a m) => Getting d b c -> (c -> d) -> m d Source #

class HasPrefix m where Source #

Minimal complete definition

withPrefix

Methods

withPrefix :: String -> m a -> m a Source #

(===) :: (Eq a, Show a) => a -> a -> Invariant infix 4 Source #

isSubsetOf' :: (Ord a, Show a) => Set a -> Set a -> Invariant Source #

relation :: (Show a, Show b) => String -> (a -> b -> Bool) -> a -> b -> Invariant Source #

trading :: (Functor f, Functor f') => Iso (Compose f (Compose g h) x) (Compose f' (Compose g' h') x') (Compose f g (h x)) (Compose f' g' (h' x')) Source #

holds :: IsAssertion prop => prop -> Bool Source #

provided :: Pre => Bool -> a -> a Source #

providedM :: Pre => Bool -> m a -> m a Source #

type Pre = ?loc :: CallStack Source #

class IsAssertion a where Source #

Minimal complete definition

toInvariant, fromBool

checkAssert :: (IsAssertion a, Pre) => a -> String -> b -> b Source #

checkAssertM :: (IsAssertion a, Monad m, Pre) => a -> String -> m () Source #

type Invariant = InvariantM () Source #

(##) :: (IsAssertion b, Pre) => String -> b -> Invariant infixr 0 Source #

member' :: (Show k, Show a, Ord k) => k -> Map k a -> Invariant Source #

isSubmapOf' :: (Ord k, Eq k, Eq a, Show k, Show a) => Map k a -> Map k a -> Invariant Source #

isProperSubmapOf' :: (Eq k, Eq a, Ord k, Show k, Show a) => Map k a -> Map k a -> Invariant Source #

Orphan instances

NFData (f (g x)) => NFData (Compose * * f g x) Source # 

Methods

rnf :: Compose * * f g x -> () #