-- 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.5


-- | 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.Special.SpecialValues GHC.Types.Int
instance Test.QuickCheck.Special.SpecialValues GHC.Int.Int8
instance Test.QuickCheck.Special.SpecialValues GHC.Int.Int16
instance Test.QuickCheck.Special.SpecialValues GHC.Int.Int32
instance Test.QuickCheck.Special.SpecialValues GHC.Int.Int64
instance Test.QuickCheck.Special.SpecialValues GHC.Types.Word
instance Test.QuickCheck.Special.SpecialValues GHC.Word.Word8
instance Test.QuickCheck.Special.SpecialValues GHC.Word.Word16
instance Test.QuickCheck.Special.SpecialValues GHC.Word.Word32
instance Test.QuickCheck.Special.SpecialValues GHC.Word.Word64
instance Test.QuickCheck.Special.SpecialValues GHC.Types.Bool
instance Test.QuickCheck.Special.SpecialValues ()
instance Test.QuickCheck.Special.SpecialValues GHC.Types.Float
instance Test.QuickCheck.Special.SpecialValues GHC.Types.Double
instance Test.QuickCheck.Special.SpecialValues GHC.Integer.Type.Integer
instance Test.QuickCheck.Special.SpecialValues GHC.Natural.Natural
instance Test.QuickCheck.Special.SpecialValues GHC.Real.Rational
instance Test.QuickCheck.Special.SpecialValues GHC.Types.Char
instance Test.QuickCheck.Special.SpecialValues Data.Text.Internal.Text
instance Test.QuickCheck.Special.SpecialValues Data.Text.Internal.Lazy.Text
instance Test.QuickCheck.Special.SpecialValues Data.ByteString.Internal.ByteString
instance Test.QuickCheck.Special.SpecialValues Data.ByteString.Lazy.Internal.ByteString
instance Test.QuickCheck.Special.SpecialValues Data.Scientific.Scientific
instance Test.QuickCheck.Special.SpecialValues a => Test.QuickCheck.Special.SpecialValues [a]
instance Test.QuickCheck.Special.SpecialValues a => Test.QuickCheck.Special.SpecialValues (GHC.Base.Maybe a)
instance (Test.QuickCheck.Special.SpecialValues a, Test.QuickCheck.Special.SpecialValues b) => Test.QuickCheck.Special.SpecialValues (Data.Either.Either a b)
instance (Test.QuickCheck.Special.SpecialValues a, Test.QuickCheck.Special.SpecialValues b) => Test.QuickCheck.Special.SpecialValues (a, b)
instance (Test.QuickCheck.Arbitrary.Arbitrary a, Test.QuickCheck.Special.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)
