module Test.QuickCheck.Instances.Num (nonNegative,nonPositive ,negative,positive ,nonZero,nonZero_ ) where import Test.QuickCheck import Control.Monad.Extensions nonNegative :: (Num a, Arbitrary a) => Gen a nonNegative :: Gen a nonNegative = a -> a forall a. Num a => a -> a abs (a -> a) -> Gen a -> Gen a forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen a forall a. Arbitrary a => Gen a arbitrary positive :: (Eq a, Num a, Arbitrary a) => Gen a positive :: Gen a positive = Gen a -> Gen a forall a. (Eq a, Num a) => Gen a -> Gen a nonZero Gen a forall a. (Num a, Arbitrary a) => Gen a nonNegative nonPositive :: (Num a, Arbitrary a) => Gen a nonPositive :: Gen a nonPositive = a -> a forall a. Num a => a -> a negate (a -> a) -> Gen a -> Gen a forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen a forall a. (Num a, Arbitrary a) => Gen a nonNegative negative :: (Eq a, Num a, Arbitrary a) => Gen a negative :: Gen a negative = a -> a forall a. Num a => a -> a negate (a -> a) -> Gen a -> Gen a forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen a forall a. (Eq a, Num a, Arbitrary a) => Gen a positive nonZero :: (Eq a, Num a) => Gen a -> Gen a nonZero :: Gen a -> Gen a nonZero Gen a g = (Int -> Gen a) -> Gen a forall a. (Int -> Gen a) -> Gen a sized (\Int s -> (a -> Bool) -> Gen a -> Gen a forall (m :: * -> *) a. Monad m => (a -> Bool) -> m a -> m a satisfiesM (a -> a -> Bool forall a. Eq a => a -> a -> Bool /= a 0) (if (Int s Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int 0) then (Int -> Gen a -> Gen a forall a. Int -> Gen a -> Gen a resize Int 1 Gen a g) else Gen a g)) nonZero_ :: (Eq a, Num a, Arbitrary a) => Gen a nonZero_ :: Gen a nonZero_ = Gen a -> Gen a forall a. (Eq a, Num a) => Gen a -> Gen a nonZero Gen a forall a. Arbitrary a => Gen a arbitrary