generic-random-1.3.0.1: Generic random generators for QuickCheck

Safe HaskellNone
LanguageHaskell2010

Generic.Random.Internal.Generic

Contents

Description

Core implementation.

Warning

This is an internal module: it is not subject to any versioning policy, breaking changes can happen at any time.

If something here seems useful, please report it or create a pull request to export it from an external module.

Synopsis

Random generators

genericArbitrary Source #

Arguments

:: GArbitrary UnsizedOpts a 
=> Weights a

List of weights for every constructor

-> Gen a 

Pick a constructor with a given distribution, and fill its fields with recursive calls to arbitrary.

Example

genericArbitrary (2 % 3 % 5 % ()) :: Gen a

Picks the first constructor with probability 2/10, the second with probability 3/10, the third with probability 5/10.

genericArbitraryU :: (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a Source #

Pick every constructor with equal probability. Equivalent to genericArbitrary uniform.

genericArbitraryU :: Gen a

genericArbitrarySingle :: (GArbitrary UnsizedOpts a, Weights_ (Rep a) ~ L c0) => Gen a Source #

arbitrary for types with one constructor. Equivalent to genericArbitraryU, with a stricter type.

genericArbitrarySingle :: Gen a

genericArbitraryRec Source #

Arguments

:: GArbitrary SizedOptsDef a 
=> Weights a

List of weights for every constructor

-> Gen a 

Decrease size at every recursive call, but don't do anything different at size 0.

genericArbitraryRec (7 % 11 % 13 % ()) :: Gen a

N.B.: This replaces the generator for fields of type [t] with listOf' arbitrary instead of listOf arbitrary (i.e., arbitrary for lists).

genericArbitraryG :: GArbitrary (SetGens genList UnsizedOpts) a => genList -> Weights a -> Gen a Source #

genericArbitrary with explicit generators.

Example

genericArbitraryG customGens (17 % 19 % ())

where, for example to override generators for String and Int fields,

customGens :: Gen String :+ Gen Int
customGens =
  (filter (/= '\NUL') <$> arbitrary) :+
  (getNonNegative <$> arbitrary)

Note on multiple matches

If the list contains multiple matching types for a field x of type a (i.e., either Gen a or FieldGen "x" a), the generator for the first match will be picked.

genericArbitraryUG :: (GArbitrary (SetGens genList UnsizedOpts) a, GUniformWeight a) => genList -> Gen a Source #

genericArbitraryU with explicit generators. See also genericArbitraryG.

genericArbitrarySingleG :: (GArbitrary (SetGens genList UnsizedOpts) a, Weights_ (Rep a) ~ L c0) => genList -> Gen a Source #

genericArbitrarySingle with explicit generators. See also genericArbitraryG.

genericArbitraryRecG Source #

Arguments

:: GArbitrary (SetGens genList SizedOpts) a 
=> genList 
-> Weights a

List of weights for every constructor

-> Gen a 

genericArbitraryRec with explicit generators. See also genericArbitraryG.

genericArbitraryWith :: GArbitrary opts a => opts -> Weights a -> Gen a Source #

General generic generator with custom options.

Internal

type family Weights_ (f :: Type -> Type) :: Type where ... Source #

Equations

Weights_ (f :+: g) = Weights_ f :| Weights_ g 
Weights_ (M1 D _c f) = Weights_ f 
Weights_ (M1 C (MetaCons c _i _j) _f) = L c 

data a :| b Source #

Constructors

N a Int b 
Instances
(UniformWeight a, UniformWeight b) => UniformWeight (a :| b) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

uniformWeight :: (a :| b, Int) Source #

WeightBuilder a => WeightBuilder (a :| b) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Associated Types

type Prec (a :| b) r :: Type Source #

Methods

(%.) :: c ~. First (a :| b) => W c -> Prec (a :| b) r -> (a :| b, Int, r) Source #

type Prec (a :| b) r Source # 
Instance details

Defined in Generic.Random.Internal.Generic

type Prec (a :| b) r = Prec a (b, Int, r)

data L (c :: Symbol) Source #

Constructors

L 
Instances
UniformWeight (L c) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

uniformWeight :: (L c, Int) Source #

WeightBuilder (L c) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Associated Types

type Prec (L c) r :: Type Source #

Methods

(%.) :: c0 ~. First (L c) => W c0 -> Prec (L c) r -> (L c, Int, r) Source #

type Prec (L c) r Source # 
Instance details

Defined in Generic.Random.Internal.Generic

type Prec (L c) r = r

data Weights a Source #

Trees of weights assigned to constructors of type a, rescaled to obtain a probability distribution.

Two ways of constructing them.

(x1 % x2 % ... % xn % ()) :: Weights a
uniform :: Weights a

Using (%), there must be exactly as many weights as there are constructors.

uniform is equivalent to (1 % ... % 1 % ()) (automatically fills out the right number of 1s).

Constructors

Weights (Weights_ (Rep a)) Int 
Instances
WeightBuilder (Weights_ (Rep a)) => WeightBuilder' (Weights a) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

(%) :: c ~. First' (Weights a) => W c -> Prec' (Weights a) -> Weights a Source #

newtype W (c :: Symbol) Source #

Type of a single weight, tagged with the name of the associated constructor for additional compile-time checking.

((9 :: W "Leaf") % (8 :: W "Node") % ())

Note: these annotations are only checked on GHC 8.0 or newer. They are ignored on older GHCs.

Constructors

W Int 
Instances
Num (W c) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

(+) :: W c -> W c -> W c #

(-) :: W c -> W c -> W c #

(*) :: W c -> W c -> W c #

negate :: W c -> W c #

abs :: W c -> W c #

signum :: W c -> W c #

fromInteger :: Integer -> W c #

weights :: (Weights_ (Rep a), Int, ()) -> Weights a Source #

A smart constructor to specify a custom distribution. It can be omitted for the % operator is overloaded to insert it.

uniform :: UniformWeight_ (Rep a) => Weights a Source #

Uniform distribution.

type family First a :: Symbol where ... Source #

Equations

First (a :| _b) = First a 
First (L c) = c 

type family First' w where ... Source #

Equations

First' (Weights a) = First (Weights_ (Rep a)) 
First' (a, Int, r) = First a 

type family Prec' w where ... Source #

Equations

Prec' (Weights a) = Prec (Weights_ (Rep a)) () 
Prec' (a, Int, r) = Prec a r 

class a ~ b => a ~. b Source #

A synonym for (~), except on GHC 7.10 and older, where it's the trivial constraint. See note on W.

Instances
a ~ b => (a :: k) ~. (b :: k) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

class WeightBuilder' w where Source #

Methods

(%) :: c ~. First' w => W c -> Prec' w -> w infixr 1 Source #

A binary constructor for building up trees of weights.

Instances
WeightBuilder (Weights_ (Rep a)) => WeightBuilder' (Weights a) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

(%) :: c ~. First' (Weights a) => W c -> Prec' (Weights a) -> Weights a Source #

WeightBuilder a => WeightBuilder' (a, Int, r) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

(%) :: c ~. First' (a, Int, r) => W c -> Prec' (a, Int, r) -> (a, Int, r) Source #

class WeightBuilder a where Source #

Associated Types

type Prec a r Source #

Methods

(%.) :: c ~. First a => W c -> Prec a r -> (a, Int, r) Source #

Instances
WeightBuilder () Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Associated Types

type Prec () r :: Type Source #

Methods

(%.) :: c ~. First () => W c -> Prec () r -> ((), Int, r) Source #

WeightBuilder (L c) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Associated Types

type Prec (L c) r :: Type Source #

Methods

(%.) :: c0 ~. First (L c) => W c0 -> Prec (L c) r -> (L c, Int, r) Source #

WeightBuilder a => WeightBuilder (a :| b) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Associated Types

type Prec (a :| b) r :: Type Source #

Methods

(%.) :: c ~. First (a :| b) => W c -> Prec (a :| b) r -> (a :| b, Int, r) Source #

class UniformWeight a where Source #

Methods

uniformWeight :: (a, Int) Source #

Instances
UniformWeight () Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

uniformWeight :: ((), Int) Source #

UniformWeight (L c) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

uniformWeight :: (L c, Int) Source #

(UniformWeight a, UniformWeight b) => UniformWeight (a :| b) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

uniformWeight :: (a :| b, Int) Source #

class UniformWeight_ (Rep a) => GUniformWeight a Source #

Derived uniform distribution of constructors for a.

Instances
UniformWeight_ (Rep a) => GUniformWeight a Source # 
Instance details

Defined in Generic.Random.Internal.Generic

newtype Options (s :: Sizing) (genList :: Type) Source #

Type-level options for GArbitrary.

Constructors

Options 

Fields

Instances
HasGenerators (Options s g) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

type SetGens g (Options s _g) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

type SetGens g (Options s _g) = Options s g
type GeneratorsOf (Options _s g) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

type GeneratorsOf (Options _s g) = g
type SizingOf (Options s _g) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

type SizingOf (Options s _g) = s

unsizedOpts :: UnsizedOpts Source #

Default options for unsized generators.

sizedOpts :: SizedOpts Source #

Default options for sized generators.

sizedOptsDef :: SizedOptsDef Source #

Default options overriding the list generator using listOf'.

data Sizing Source #

Whether to decrease the size parameter before generating fields.

Constructors

Sized 
Unsized 

type family SizingOf opts :: Sizing Source #

Instances
type SizingOf (Options s _g) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

type SizingOf (Options s _g) = s

data a :+ b infixr 1 Source #

Heterogeneous list of generators.

Constructors

a :+ b infixr 1 
Instances
ArbitraryOr fg b g sel a => ArbitraryOr fg () (b :+ g) sel a Source #

Examine the next candidate

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> () -> (b :+ g) -> Gen a Source #

ArbitraryOr fg g (h :+ gs) sel a => ArbitraryOr fg (g :+ h) gs sel a Source #

This can happen if the generators form a tree rather than a list, for whatever reason.

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> (g :+ h) -> gs -> Gen a Source #

type family GeneratorsOf opts :: Type Source #

Instances
type GeneratorsOf (Options _s g) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

type GeneratorsOf (Options _s g) = g

class HasGenerators opts where Source #

Methods

generators :: opts -> GeneratorsOf opts Source #

Instances
HasGenerators (Options s g) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

setGenerators :: genList -> Options s g0 -> Options s genList Source #

type family SetGens (g :: Type) opts Source #

Instances
type SetGens g (Options s _g) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

type SetGens g (Options s _g) = Options s g

newtype FieldGen (s :: Symbol) a Source #

Custom generator for record fields named s.

Available only for base >= 4.9 (GHC >= 8.0.1).

Constructors

FieldGen 

Fields

Instances
a ~ a' => ArbitraryOr fg (FieldGen s a) g ((,,) con i (Just s)) a' Source #

Matching custom generator for field s.

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy (con, i, Just s) -> fg -> FieldGen s a -> g -> Gen a' Source #

fieldGen :: proxy s -> Gen a -> FieldGen s a Source #

FieldGen constructor with the field name given via a proxy.

newtype ConstrGen (c :: Symbol) (i :: Nat) a Source #

Custom generator for the i-th field of the constructor named c.

Available only for base >= 4.9 (GHC >= 8.0.1).

Constructors

ConstrGen 

Fields

Instances
a ~ a' => ArbitraryOr fg (ConstrGen c i a) g ((,,) (Just c) i s) a' Source #

Matching custom generator for i-th field of constructor c.

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy (Just c, i, s) -> fg -> ConstrGen c i a -> g -> Gen a' Source #

constrGen :: proxy '(c, i) -> Gen a -> ConstrGen c i a Source #

ConstrGen constructor with the constructor name given via a proxy.

newtype Gen1 f Source #

Custom generators for "containers" of kind Type -> Type, parameterized by the generator for "contained elements".

A custom generator Gen1 f will be used for any field whose type has the form f x, requiring a generator of x.

Constructors

Gen1 

Fields

Instances
ArbitraryOr fg () fg ((,,) (Nothing :: Maybe Symbol) 0 (Nothing :: Maybe Symbol)) a => ArbitraryOr fg (Gen1 f) g sel (f a) Source #

Matching custom generator for container f. Start the search for containee a, discarding field information.

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> Gen1 f -> g -> Gen (f a) Source #

newtype Gen1_ f Source #

Custom generators for unary type constructors that are not "containers", i.e., which don't require a generator of a to generate an f a.

A custom generator Gen1_ f will be used for any field whose type has the form f x.

Constructors

Gen1_ 

Fields

Instances
ArbitraryOr fg (Gen1_ f) g sel (f a) Source #

Matching custom generator for non-container f

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> Gen1_ f -> g -> Gen (f a) Source #

vectorOf' :: Int -> Gen a -> Gen [a] Source #

An alternative to vectorOf that divides the size parameter by the length of the list.

listOf' :: Gen a -> Gen [a] Source #

An alternative to listOf that divides the size parameter by the length of the list. The length follows a geometric distribution of parameter 1/(sqrt size + 1).

listOf1' :: Gen a -> Gen [a] Source #

An alternative to listOf1 (nonempty lists) that divides the size parameter by the length of the list. The length (minus one) follows a geometric distribution of parameter 1/(sqrt size + 1).

geom :: Int -> Gen Int Source #

Geometric distribution of parameter 1/(sqrt n + 1) (n >= 0).

class GA opts f where Source #

Generic Arbitrary

Methods

ga :: opts -> Weights_ f -> Int -> Gen (f p) Source #

Instances
(GASum opts f, GASum opts g) => GA opts (f :+: g) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

ga :: opts -> Weights_ (f :+: g) -> Int -> Gen ((f :+: g) p) Source #

GAProduct (SizingOf opts) (Name c) opts f => GA opts (M1 C c f) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

ga :: opts -> Weights_ (M1 C c f) -> Int -> Gen (M1 C c f p) Source #

GA opts f => GA opts (M1 D c f) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

ga :: opts -> Weights_ (M1 D c f) -> Int -> Gen (M1 D c f p) Source #

class (Generic a, GA opts (Rep a)) => GArbitrary opts a Source #

Generic Arbitrary

Instances
(Generic a, GA opts (Rep a)) => GArbitrary opts a Source # 
Instance details

Defined in Generic.Random.Internal.Generic

gaSum' :: GASum opts f => opts -> Weights_ f -> Int -> Gen (f p) Source #

class GASum opts f where Source #

Methods

gaSum :: opts -> Int -> Weights_ f -> Gen (f p) Source #

Instances
(GASum opts f, GASum opts g) => GASum opts (f :+: g) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

gaSum :: opts -> Int -> Weights_ (f :+: g) -> Gen ((f :+: g) p) Source #

GAProduct (SizingOf opts) (Name c) opts f => GASum opts (M1 C c f) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

gaSum :: opts -> Int -> Weights_ (M1 C c f) -> Gen (M1 C c f p) Source #

class GAProduct (s :: Sizing) (c :: Maybe Symbol) opts f where Source #

Methods

gaProduct :: proxys '(s, c) -> opts -> Gen (f p) Source #

Instances
GAProduct' c 0 opts f => GAProduct Unsized c opts (f :: k -> Type) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

gaProduct :: proxys (Unsized, c) -> opts -> Gen (f p) Source #

(GAProduct' c 0 opts f, KnownNat (Arity f)) => GAProduct Sized c opts (f :: k -> Type) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

gaProduct :: proxys (Sized, c) -> opts -> Gen (f p) Source #

GAProduct Sized c opts (U1 :: k -> Type) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

gaProduct :: proxys (Sized, c) -> opts -> Gen (U1 p) Source #

GAProduct' c 0 opts (S1 d f) => GAProduct Sized c opts (S1 d f :: k -> Type) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

gaProduct :: proxys (Sized, c) -> opts -> Gen (S1 d f p) Source #

class GAProduct' (c :: Maybe Symbol) (i :: Nat) opts f where Source #

Methods

gaProduct' :: proxy '(c, i) -> opts -> Gen (f p) Source #

Instances
GAProduct' c i opts (U1 :: k -> Type) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

gaProduct' :: proxy (c, i) -> opts -> Gen (U1 p) Source #

(GAProduct' c i opts f, GAProduct' c (i + Arity f) opts g) => GAProduct' c i opts (f :*: g :: k -> Type) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

gaProduct' :: proxy (c, i) -> opts -> Gen ((f :*: g) p) Source #

(HasGenerators opts, ArbitraryOr gs () gs ((,,) c i (Name d)) a, gs ~ GeneratorsOf opts) => GAProduct' c i opts (S1 d (K1 _k a :: k -> Type) :: k -> Type) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

gaProduct' :: proxy (c, i) -> opts -> Gen (S1 d (K1 _k a) p) Source #

type family Arity f :: Nat where ... Source #

Equations

Arity (f :*: g) = Arity f + Arity g 
Arity (M1 _i _c _f) = 1 

class ArbitraryOr (fullGenList :: Type) (g :: Type) (gs :: Type) (sel :: (Maybe Symbol, Nat, Maybe Symbol)) a where Source #

Given a list of custom generators gs, find one that applies, or use Arbitrary a by default.

g and gs follow this little state machine:

          g,      gs | result
---------------------+-----------------------------
         (),      () | END
         (), g :+ gs | g, gs
         (),      g  | g, () when g is not (_ :+ _)
     g :+ h,      gs | g, h :+ gs
      Gen a,      gs | END if matching, else (), gs
 FieldGen a,      gs | idem
ConstrGen a,      gs | idem
     Gen1 a,      gs | idem
    Gen1_ a,      gs | idem

Methods

arbitraryOr :: proxy sel -> fullGenList -> g -> gs -> Gen a Source #

Instances
ArbitraryOr fg () gs sel a => ArbitraryOr fg g gs sel a Source #

None of the INCOHERENT instances match, discard the candidate g and look at the rest of the list gs.

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> g -> gs -> Gen a Source #

ArbitraryOr fg g () sel a => ArbitraryOr fg () g sel a Source #

Examine the last candidate (g is not of the form _ :+ _)

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> () -> g -> Gen a Source #

Arbitrary a => ArbitraryOr fg () () sel a Source #

All candidates have been exhausted

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> () -> () -> Gen a Source #

ArbitraryOr fg b g sel a => ArbitraryOr fg () (b :+ g) sel a Source #

Examine the next candidate

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> () -> (b :+ g) -> Gen a Source #

ArbitraryOr fg (Gen a) g sel a Source #

Matching custom generator for a.

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> Gen a -> g -> Gen a Source #

ArbitraryOr fg () fg ((,,) (Nothing :: Maybe Symbol) 0 (Nothing :: Maybe Symbol)) a => ArbitraryOr fg (Gen1 f) g sel (f a) Source #

Matching custom generator for container f. Start the search for containee a, discarding field information.

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> Gen1 f -> g -> Gen (f a) Source #

ArbitraryOr fg g (h :+ gs) sel a => ArbitraryOr fg (g :+ h) gs sel a Source #

This can happen if the generators form a tree rather than a list, for whatever reason.

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> (g :+ h) -> gs -> Gen a Source #

ArbitraryOr fg (Gen1_ f) g sel (f a) Source #

Matching custom generator for non-container f

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy sel -> fg -> Gen1_ f -> g -> Gen (f a) Source #

a ~ a' => ArbitraryOr fg (FieldGen s a) g ((,,) con i (Just s)) a' Source #

Matching custom generator for field s.

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy (con, i, Just s) -> fg -> FieldGen s a -> g -> Gen a' Source #

a ~ a' => ArbitraryOr fg (ConstrGen c i a) g ((,,) (Just c) i s) a' Source #

Matching custom generator for i-th field of constructor c.

Instance details

Defined in Generic.Random.Internal.Generic

Methods

arbitraryOr :: proxy (Just c, i, s) -> fg -> ConstrGen c i a -> g -> Gen a' Source #

type family Name (d :: Meta) :: Maybe Symbol Source #

Get the name contained in a Meta tag.

Instances
type Name (MetaCons n _f _s) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

type Name (MetaCons n _f _s) = Just n
type Name (MetaSel mn su ss ds) Source # 
Instance details

Defined in Generic.Random.Internal.Generic

type Name (MetaSel mn su ss ds) = mn

newtype Weighted a Source #

Constructors

Weighted (Maybe (Int -> Gen a, Int)) 
Instances
Functor Weighted Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

fmap :: (a -> b) -> Weighted a -> Weighted b #

(<$) :: a -> Weighted b -> Weighted a #

Applicative Weighted Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

pure :: a -> Weighted a #

(<*>) :: Weighted (a -> b) -> Weighted a -> Weighted b #

liftA2 :: (a -> b -> c) -> Weighted a -> Weighted b -> Weighted c #

(*>) :: Weighted a -> Weighted b -> Weighted b #

(<*) :: Weighted a -> Weighted b -> Weighted a #

Alternative Weighted Source # 
Instance details

Defined in Generic.Random.Internal.Generic

Methods

empty :: Weighted a #

(<|>) :: Weighted a -> Weighted a -> Weighted a #

some :: Weighted a -> Weighted [a] #

many :: Weighted a -> Weighted [a] #