-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Simple type-level combinators for augmenting
--   QuickCheck instances.
--   
--   Simply wrap the type you want to generate (assuming it satisfies all
--   the necessary constraints) to refine the terms generated:
--   
--   <pre>
--   {-# LANGUAGE DataKinds #-}
--   
--   import Data.Set (Set)
--   import Test.QuickCheck
--   import Test.QuickCheck.Instances
--   import GHC.TypeLits
--   
--   instance Arbitrary LinearEquation where
--     arbitrary = do
--       vars &lt;- arbitrary :: Gen (AtLeast 3 Set String)
--       -- ...
--   </pre>
@package quickcheck-combinators
@version 0.0.2

module Test.QuickCheck.Combinators

-- | Generate with a minimum, inclusive size as <tt>n :: Nat</tt>
newtype AtLeast (n :: Nat) t a
AtLeast :: t a -> AtLeast t a
[getAtLeast] :: AtLeast t a -> t a

-- | Generate with a maximum, inclusive size as <tt>n :: Nat</tt>
newtype AtMost (n :: Nat) t a
AtMost :: t a -> AtMost t a
[getAtMost] :: AtMost t a -> t a

-- | Generate between the inclusive range of <tt>n :: Nat</tt> and <tt>m ::
--   Nat</tt>
newtype Between (n :: Nat) (m :: Nat) t a
Between :: t a -> Between t a
[getBetween] :: Between t a -> t a

-- | Convenience for <tt>AtLeast 1</tt>
type NonMempty = AtLeast 1
instance GHC.Base.Monoid (t a) => GHC.Base.Monoid (Test.QuickCheck.Combinators.Between n m t a)
instance Data.Traversable.Traversable t => Data.Traversable.Traversable (Test.QuickCheck.Combinators.Between n m t)
instance Data.Foldable.Foldable t => Data.Foldable.Foldable (Test.QuickCheck.Combinators.Between n m t)
instance GHC.Base.Monad t => GHC.Base.Monad (Test.QuickCheck.Combinators.Between n m t)
instance GHC.Base.Applicative t => GHC.Base.Applicative (Test.QuickCheck.Combinators.Between n m t)
instance GHC.Base.Functor t => GHC.Base.Functor (Test.QuickCheck.Combinators.Between n m t)
instance GHC.Generics.Generic (Test.QuickCheck.Combinators.Between n m t a)
instance (Data.Data.Data (t a), Data.Typeable.Internal.Typeable a, Data.Typeable.Internal.Typeable t, GHC.TypeNats.KnownNat m, GHC.TypeNats.KnownNat n) => Data.Data.Data (Test.QuickCheck.Combinators.Between n m t a)
instance GHC.Enum.Enum (t a) => GHC.Enum.Enum (Test.QuickCheck.Combinators.Between n m t a)
instance GHC.Classes.Ord (t a) => GHC.Classes.Ord (Test.QuickCheck.Combinators.Between n m t a)
instance GHC.Classes.Eq (t a) => GHC.Classes.Eq (Test.QuickCheck.Combinators.Between n m t a)
instance GHC.Read.Read (t a) => GHC.Read.Read (Test.QuickCheck.Combinators.Between n m t a)
instance GHC.Show.Show (t a) => GHC.Show.Show (Test.QuickCheck.Combinators.Between n m t a)
instance GHC.Base.Monoid (t a) => GHC.Base.Monoid (Test.QuickCheck.Combinators.AtMost n t a)
instance Data.Traversable.Traversable t => Data.Traversable.Traversable (Test.QuickCheck.Combinators.AtMost n t)
instance Data.Foldable.Foldable t => Data.Foldable.Foldable (Test.QuickCheck.Combinators.AtMost n t)
instance GHC.Base.Monad t => GHC.Base.Monad (Test.QuickCheck.Combinators.AtMost n t)
instance GHC.Base.Applicative t => GHC.Base.Applicative (Test.QuickCheck.Combinators.AtMost n t)
instance GHC.Base.Functor t => GHC.Base.Functor (Test.QuickCheck.Combinators.AtMost n t)
instance GHC.Generics.Generic (Test.QuickCheck.Combinators.AtMost n t a)
instance (Data.Data.Data (t a), Data.Typeable.Internal.Typeable a, Data.Typeable.Internal.Typeable t, GHC.TypeNats.KnownNat n) => Data.Data.Data (Test.QuickCheck.Combinators.AtMost n t a)
instance GHC.Enum.Enum (t a) => GHC.Enum.Enum (Test.QuickCheck.Combinators.AtMost n t a)
instance GHC.Classes.Ord (t a) => GHC.Classes.Ord (Test.QuickCheck.Combinators.AtMost n t a)
instance GHC.Classes.Eq (t a) => GHC.Classes.Eq (Test.QuickCheck.Combinators.AtMost n t a)
instance GHC.Read.Read (t a) => GHC.Read.Read (Test.QuickCheck.Combinators.AtMost n t a)
instance GHC.Show.Show (t a) => GHC.Show.Show (Test.QuickCheck.Combinators.AtMost n t a)
instance GHC.Base.Monoid (t a) => GHC.Base.Monoid (Test.QuickCheck.Combinators.AtLeast n t a)
instance Data.Traversable.Traversable t => Data.Traversable.Traversable (Test.QuickCheck.Combinators.AtLeast n t)
instance Data.Foldable.Foldable t => Data.Foldable.Foldable (Test.QuickCheck.Combinators.AtLeast n t)
instance GHC.Base.Monad t => GHC.Base.Monad (Test.QuickCheck.Combinators.AtLeast n t)
instance GHC.Base.Applicative t => GHC.Base.Applicative (Test.QuickCheck.Combinators.AtLeast n t)
instance GHC.Base.Functor t => GHC.Base.Functor (Test.QuickCheck.Combinators.AtLeast n t)
instance GHC.Generics.Generic (Test.QuickCheck.Combinators.AtLeast n t a)
instance (Data.Data.Data (t a), Data.Typeable.Internal.Typeable a, Data.Typeable.Internal.Typeable t, GHC.TypeNats.KnownNat n) => Data.Data.Data (Test.QuickCheck.Combinators.AtLeast n t a)
instance GHC.Enum.Enum (t a) => GHC.Enum.Enum (Test.QuickCheck.Combinators.AtLeast n t a)
instance GHC.Classes.Ord (t a) => GHC.Classes.Ord (Test.QuickCheck.Combinators.AtLeast n t a)
instance GHC.Classes.Eq (t a) => GHC.Classes.Eq (Test.QuickCheck.Combinators.AtLeast n t a)
instance GHC.Read.Read (t a) => GHC.Read.Read (Test.QuickCheck.Combinators.AtLeast n t a)
instance GHC.Show.Show (t a) => GHC.Show.Show (Test.QuickCheck.Combinators.AtLeast n t a)
instance (Data.Unfoldable.Restricted.UnfoldableR p t, GHC.Base.Monoid (t a), Test.QuickCheck.Arbitrary.Arbitrary a, GHC.TypeNats.KnownNat n, GHC.TypeNats.KnownNat m, p a) => Test.QuickCheck.Arbitrary.Arbitrary (Test.QuickCheck.Combinators.Between n m t a)
instance (Test.QuickCheck.Arbitrary.Arbitrary a, GHC.Classes.Ord a, GHC.TypeNats.KnownNat n, Data.Unfoldable.Restricted.UnfoldableR p [], p a, GHC.TypeNats.KnownNat m) => Test.QuickCheck.Arbitrary.Arbitrary (Test.QuickCheck.Combinators.Between n m Test.QuickCheck.Modifiers.OrderedList a)
instance (Data.Unfoldable.Restricted.UnfoldableR p t, GHC.Base.Monoid (t a), Test.QuickCheck.Arbitrary.Arbitrary a, GHC.TypeNats.KnownNat m, p a) => Test.QuickCheck.Arbitrary.Arbitrary (Test.QuickCheck.Combinators.AtMost m t a)
instance (Test.QuickCheck.Arbitrary.Arbitrary a, GHC.Classes.Ord a, Data.Unfoldable.Restricted.UnfoldableR p [], p a, GHC.TypeNats.KnownNat n) => Test.QuickCheck.Arbitrary.Arbitrary (Test.QuickCheck.Combinators.AtMost n Test.QuickCheck.Modifiers.OrderedList a)
instance (Data.Unfoldable.Restricted.UnfoldableR p t, GHC.Base.Monoid (t a), Test.QuickCheck.Arbitrary.Arbitrary a, GHC.TypeNats.KnownNat n, p a) => Test.QuickCheck.Arbitrary.Arbitrary (Test.QuickCheck.Combinators.AtLeast n t a)
instance (Test.QuickCheck.Arbitrary.Arbitrary a, GHC.Classes.Ord a, Data.Unfoldable.Restricted.UnfoldableR p [], p a, GHC.TypeNats.KnownNat n) => Test.QuickCheck.Arbitrary.Arbitrary (Test.QuickCheck.Combinators.AtLeast n Test.QuickCheck.Modifiers.OrderedList a)
