We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
I was able to implement an arbitrary monotonic function like this:
-- | A modifier to generate monotonic functions newtype Monotonic a b = Monotonic (a -> b) instance Show (Monotonic a b) where show _ = "<monotonic fun>" instance (Show b, Real a, Arbitrary b, Fractional b, Real b, Ord b) => Arbitrary (Monotonic a b) where arbitrary = do x <- arbitrary ups <- infiniteListMonotonic downs <- infiniteListMonotonic pure $ Monotonic $ \a -> let (n, frac) = properFraction $ toRational a (getIndex, index) = if n >= 0 then (\i -> x + (ups !! i), n) else (\i -> x - (downs !! i), (-n)) lo = getIndex index hi = getIndex (index + 1) in lo + fromRational frac * (hi - lo) where infiniteListMonotonic = scanl1 (+) . map getNonNegative <$> infiniteList
It would be great if this could be included in the base library, potentially with extra features like:
Fun
Double -> Int
round
truncate
data Octal = O0 | O1 | O2 | O3 | O4 | O5 | O6 | O7 arbitrary :: Gen (Octal -> Int)
The text was updated successfully, but these errors were encountered:
No branches or pull requests
I was able to implement an arbitrary monotonic function like this:
It would be great if this could be included in the base library, potentially with extra features like:
Fun
doesDouble -> Int
, interpolate between the two ints, thenround
ortruncate
The text was updated successfully, but these errors were encountered: