numhask-0.1.4.0: A numeric prelude

Safe HaskellNone
LanguageHaskell2010

NumHask.Laws

Synopsis

Documentation

data LawArity a #

Constructors

Nonary Bool 
Unary (a -> Bool) 
Binary (a -> a -> Bool) 
Ternary (a -> a -> a -> Bool) 
Ornary (a -> a -> a -> a -> Bool) 
Failiary (a -> Property) 

data LawArity2 a b #

Constructors

Unary2 (a -> Bool) 
Binary2 (a -> b -> Bool) 
Ternary2 (a -> a -> b -> Bool) 
Ternary2' (a -> b -> b -> Bool) 
Ternary2'' (a -> a -> a -> Bool) 
Quad31 (a -> a -> a -> b -> Bool) 
Quad22 (a -> a -> b -> b -> Bool) 
Failiary2 (a -> Property) 

type Law a = (TestName, LawArity a) #

type Law2 a b = (TestName, LawArity2 a b) #

testLawOf :: (Arbitrary a, Show a) => [a] -> Law a -> TestTree #

testLawOf2 :: (Arbitrary a, Show a, Arbitrary b, Show b) => [(a, b)] -> Law2 a b -> TestTree #

additiveLaws :: (Eq a, Additive a) => [Law a] #

additiveLawsFail :: (Eq a, Additive a, Show a, Arbitrary a) => [Law a] #

signedLaws :: (Eq a, Signed a) => [Law a] #

additiveBasisLaws :: (Eq (r a), Epsilon (r a), AdditiveBasis r a) => [Law (r a)] #

additiveModuleLaws :: (Eq (r a), Epsilon a, Epsilon (r a), AdditiveModule r a) => [Law2 (r a) a] #

additiveGroupModuleLaws :: (Eq (r a), Epsilon a, Epsilon (r a), AdditiveGroupModule r a) => [Law2 (r a) a] #

multiplicativeModuleLaws :: (Eq (r a), Epsilon a, Epsilon (r a), MultiplicativeModule r a) => [Law2 (r a) a] #

multiplicativeGroupModuleLawsFail :: (Eq a, Show a, Arbitrary a, Eq (r a), Show (r a), Arbitrary (r a), Epsilon a, Epsilon (r a), MultiplicativeGroupModule r a) => [Law2 (r a) a] #

expFieldNaperianLaws :: (ExpField (r a), Foldable r, ExpField a, Epsilon a, Signed a, Epsilon (r a), Fractional a, Ord a) => [Law (r a)] #

tensorProductLaws :: (Eq (r (r a)), Additive (r (r a)), Eq (r a), Eq a, TensorProduct (r a), Epsilon a, Epsilon (r a)) => [Law2 (r a) a] #

banachLaws :: (Ord a, Fractional a, Signed a, Foldable r, Fractional b, Eq (r a), Epsilon b, Epsilon (r a), Metric (r a) b, MultiplicativeGroup b, Banach r a, Normed (r a) b, Singleton r) => [Law2 (r a) b] #

hilbertLaws :: (Eq (r a), Eq a, Multiplicative a, MultiplicativeModule r a, Epsilon a, Epsilon (r a), Hilbert r a) => [Law2 (r a) a] #

semiringLaws :: (Eq a, Semiring a) => [Law a] #

semiring

ringLaws :: (Eq a, Ring a) => [Law a] #

ring

starSemiringLaws :: (Eq a, StarSemiring a) => [Law a] #

starsemiring