clash-prelude-hedgehog
Copyright(C) 2026 QBayLogic B.V.
LicenseBSD2 (see the file LICENSE)
MaintainerQBayLogic B.V. <devops@qbaylogic.com>
Safe HaskellSafe-Inferred
LanguageHaskell2010

Clash.Hedgehog.Promoted.Nat

Description

Random generation of SNat.

Synopsis

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

Instances details
Show (SomeBoundedSNat lower upperInclusive) Source # 
Instance details

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.