clash-lib-hedgehog-1.5.0: Hedgehog Generators for clash-lib
Copyright(C) 2021 QBayLogic B.V.
LicenseBSD2 (see the file LICENSE)
MaintainerQBayLogic B.V. <>
Safe HaskellNone



Random generation of unique variables and unique containers.



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).


biasOf :: a -> Int Source #


Instances details
Bias TyCon Source # 
Instance details

Defined in Clash.Hedgehog.Internal.Bias


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 #