clash-lib-hedgehog-1.5.0: Hedgehog Generators for clash-lib

Clash.Hedgehog.Unique

Description

Random generation of unique variables and unique containers.

Synopsis

# Documentation

genUnique :: forall m. MonadGen m => m Unique Source #

genUniqMap :: forall m k v. (MonadGen m, Uniquable k) => Range Int -> m k -> m v -> m (UniqMap v) Source #

sampleUniqMap :: forall m v. (Alternative m, MonadGen m, HasType v) => (v -> Bool) -> Type -> UniqMap v -> m (v, [Type]) Source #

sampleAnyUniqMap :: forall m v. (Alternative m, MonadGen m, HasType v) => UniqMap v -> m (v, [Type]) Source #

genUniqSet :: forall m v. (MonadGen m, Uniquable v) => Range Int -> m v -> m (UniqSet v) Source #

class Bias a where Source #

Determine the bias of an item. This is used to set the weight of that item so we can sample using the frequency generator instead of element or choice.

Where might you want to introduce such a bias? If there is a collection of elements where there is a likeliness that real code would use certain values more or less, we want to be able to capture this. An obvious example of this is the TyConMap, where without it every constructor would have an even weighting, when in reality some (like Void# or Addr# are much less likely to appear in code written by a Clash user).

Methods

biasOf :: a -> Int Source #

#### Instances

Instances details
 Bias TyCon Source # Instance detailsDefined in Clash.Hedgehog.Internal.Bias MethodsbiasOf :: TyCon -> Int Source #

sampleUniqMapBiased :: forall m v. (Alternative m, MonadGen m, HasType v, Bias v) => (v -> Bool) -> Type -> UniqMap v -> m (v, [Type]) Source #