clash-lib-hedgehog-1.6.4: Hedgehog Generators for clash-lib
Copyright(C) 2021 QBayLogic B.V.
LicenseBSD2 (see the file LICENSE)
MaintainerQBayLogic B.V. <devops@qbaylogic.com>
Safe HaskellNone
LanguageHaskell2010

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 details

Defined in Clash.Hedgehog.Internal.Bias

Methods

biasOf :: TyCon -> Int Source #

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