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


-- | Edge cases and special values for QuickCheck Arbitrary instances
--   
--   The standard Arbitrary instances of QuickCheck don't generate special
--   values. This is fixed by this package which provides the newtype
--   Special with an Arbitrary instance. The special values are given by
--   the SpecialValues typeclass.
@package quickcheck-special
@version 0.1.0.6


-- | The standard <a>Arbitrary</a> instances don't generate special values.
--   This is fixed by this package which provides the newtype
--   <a>Special</a> with an <a>Arbitrary</a> instance. The special values
--   are given by the <a>SpecialValues</a> typeclass.
module Test.QuickCheck.Special

-- | Additionally to the standard Arbitrary instances, this generates
--   special values with a small probability.
newtype Special a
Special :: a -> Special a
[getSpecial] :: Special a -> a

-- | Provides a list of special values or edge cases
class SpecialValues a

-- | Finite list of special values
specialValues :: SpecialValues a => [a]
instance GHC.Real.Integral a => GHC.Real.Integral (Test.QuickCheck.Special.Special a)
instance GHC.Real.Real a => GHC.Real.Real (Test.QuickCheck.Special.Special a)
instance GHC.Num.Num a => GHC.Num.Num (Test.QuickCheck.Special.Special a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Test.QuickCheck.Special.Special a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Test.QuickCheck.Special.Special a)
instance GHC.Enum.Enum a => GHC.Enum.Enum (Test.QuickCheck.Special.Special a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Test.QuickCheck.Special.Special a)
instance GHC.Base.Functor Test.QuickCheck.Special.Special
instance GHC.Read.Read a => GHC.Read.Read (Test.QuickCheck.Special.Special a)
instance GHC.Show.Show a => GHC.Show.Show (Test.QuickCheck.Special.Special a)
instance (Test.QuickCheck.Arbitrary.Arbitrary a, Data.SpecialValues.SpecialValues a) => Test.QuickCheck.Arbitrary.Arbitrary (Test.QuickCheck.Special.Special a)
instance Test.QuickCheck.Arbitrary.CoArbitrary a => Test.QuickCheck.Arbitrary.CoArbitrary (Test.QuickCheck.Special.Special a)
