| Copyright | (C) 2026 QBayLogic B.V. |
|---|---|
| License | BSD2 (see the file LICENSE) |
| Maintainer | QBayLogic B.V. <devops@qbaylogic.com> |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Clash.Hedgehog.Promoted.Nat
Description
Random generation of SNat.
Synopsis
- data SomeBoundedSNat lower upperInclusive where
- SomeBoundedSNat :: forall n lower upperInclusive. (lower <= n, n <= upperInclusive) => SNat n -> SomeBoundedSNat lower upperInclusive
- genSomeBoundedSNat :: (KnownNat lower, KnownNat upperInclusive, lower <= upperInclusive) => Gen (SomeBoundedSNat lower upperInclusive)
- genSomeBoundedSNat_ :: (KnownNat lower, KnownNat upperInclusive, lower <= upperInclusive) => Gen (SomeBoundedSNat lower upperInclusive)
- genSomeBoundedSNat# :: forall lower upperInclusive. (KnownNat lower, KnownNat upperInclusive, lower <= upperInclusive) => (Natural -> Natural -> Gen Natural) -> Gen (SomeBoundedSNat lower upperInclusive)
Documentation
data SomeBoundedSNat lower upperInclusive where Source #
Like SomeSNat, but with bounds.
Constructors
| SomeBoundedSNat :: forall n lower upperInclusive. (lower <= n, n <= upperInclusive) => SNat n -> SomeBoundedSNat lower upperInclusive |
Instances
| Show (SomeBoundedSNat lower upperInclusive) Source # | |
Defined in Clash.Hedgehog.Promoted.Nat Methods showsPrec :: Int -> SomeBoundedSNat lower upperInclusive -> ShowS # show :: SomeBoundedSNat lower upperInclusive -> String # showList :: [SomeBoundedSNat lower upperInclusive] -> ShowS # | |
genSomeBoundedSNat :: (KnownNat lower, KnownNat upperInclusive, lower <= upperInclusive) => Gen (SomeBoundedSNat lower upperInclusive) Source #
Generate a SomeBoundedSNat between the given bounds (inclusive).
Uses linear and shrinks to lower.
For example, to bring into scope the constraints (KnownNat n, 1 <= n, n <= 8):
SomeBoundedSNat (SNat :: SNat n) <- forAll (genSomeBoundedSNat @1 @8)
genSomeBoundedSNat_ :: (KnownNat lower, KnownNat upperInclusive, lower <= upperInclusive) => Gen (SomeBoundedSNat lower upperInclusive) Source #
Like genSomeBoundedSNat but does not shrink.
genSomeBoundedSNat# :: forall lower upperInclusive. (KnownNat lower, KnownNat upperInclusive, lower <= upperInclusive) => (Natural -> Natural -> Gen Natural) -> Gen (SomeBoundedSNat lower upperInclusive) Source #
Generate a SomeBoundedSNat between the given bounds (inclusive).
To do so, uses a given term level generator.
NB: Make sure the given generator respects the bounds that it is passed at the term level.