forAll

forAll :: (Show a, Testable prop) => Gen a -> (a -> prop) -> Property
QuickCheck Test.QuickCheck.Property, QuickCheck Test.QuickCheck
Explicit universal quantification: uses an explicitly given test case generator.
forAllM :: (Monad m, Show a) => Gen a -> (a -> PropertyM m b) -> PropertyM m b
QuickCheck Test.QuickCheck.Monadic
forAllProperties :: Q Exp
QuickCheck Test.QuickCheck.All
Test all properties in the current module, using a custom quickCheck function. The same caveats as with quickCheckAll apply. $forAllProperties has type (Property -> IO Result) -> IO Bool. An example invocation is $forAllProperties quickCheckResult, which does the same thing as $quickCheckAll.
forAllShrink :: (Show a, Testable prop) => Gen a -> (a -> [a]) -> (a -> prop) -> Property
QuickCheck Test.QuickCheck.Property, QuickCheck Test.QuickCheck
Like forAll, but tries to shrink the argument for failing test cases.
keyword forall
keyword
This is a GHC/Hugs extension, and as such is not portable Haskell 98/2010. It is only a reserved word within types. Type variables in a Haskell type expression are all assumed to be universally quantified; there is no explicit syntax for universal quantification, in standard Haskell 98/2010. For example, the type expressiona -> a denotes the type forall a. a ->a. For clarity, however, we often write quantification explicitly when discussing the types of Haskell programs. When we write an explicitly quantified type, the scope of the forall extends as far to the right as possible; for example, > forall a. a -> a means > forall a. (a -> a) > GHC introduces a forall keyword, allowing explicit quantification, for example, to encode existential types: > data Foo = forall a. MkFoo a (a -> Bool) > | Nil > > MkFoo :: forall a. a -> (a -> Bool) -> Foo > Nil   :: Foo > > [MkFoo 3 even, MkFoo 'c' isUpper] :: [Foo]
ForallC :: [TyVarBndr] -> Cxt -> Con -> Con
template-haskell Language.Haskell.TH.Syntax, template-haskell Language.Haskell.TH
> forall a. Eq a => C [a]
forallC :: [TyVarBndr] -> CxtQ -> ConQ -> ConQ
template-haskell Language.Haskell.TH.Lib, template-haskell Language.Haskell.TH
ForallT :: [TyVarBndr] -> Cxt -> Type -> Type
template-haskell Language.Haskell.TH.Syntax, template-haskell Language.Haskell.TH
> forall <vars>. <ctxt> -> <type>
forallT :: [TyVarBndr] -> CxtQ -> TypeQ -> TypeQ
template-haskell Language.Haskell.TH.Lib, template-haskell Language.Haskell.TH