Module

Control.Monad.Gen

Package
purescript-gen
Repository
purescript/purescript-gen

#choose Source

choose :: forall a m. MonadGen m => m a -> m a -> m a

Creates a generator that outputs a value chosen from one of two existing existing generators with even probability.

#oneOf Source

oneOf :: forall a f m. MonadGen m => Foldable1 f => f (m a) -> m a

Creates a generator that outputs a value chosen from a selection of existing generators with uniform probability.

#frequency Source

frequency :: forall a f m. MonadGen m => Foldable1 f => f (Tuple Number (m a)) -> m a

Creates a generator that outputs a value chosen from a selection of existing generators, where the selection has weight values for the probability of choice for each generator. The probability values will be normalised.

#elements Source

elements :: forall a f m. MonadGen m => Foldable1 f => f a -> m a

Creates a generator that outputs a value chosen from a selection with uniform probability.

#unfoldable Source

unfoldable :: forall a f m. MonadRec m => MonadGen m => Unfoldable f => m a -> m (f a)

Creates a generator that produces unfoldable structures based on an existing generator for the elements.

The size of the unfoldable will be determined by the current size state for the generator. To generate an unfoldable structure of a particular size, use the resize function from the MonadGen class first.

#suchThat Source

suchThat :: forall a m. MonadRec m => MonadGen m => m a -> (a -> Boolean) -> m a

Creates a generator that repeatedly run another generator until its output matches a given predicate. This will never halt if the predicate always fails.

#filtered Source

filtered :: forall a m. MonadRec m => MonadGen m => m (Maybe a) -> m a

Creates a generator that repeatedly run another generator until it produces Just node. This will never halt if the input generator always produces Nothing.

Re-exports from Control.Monad.Gen.Class

#Size Source

type Size = Int

#MonadGen Source

class (Monad m) <= MonadGen m  where

A class for random generator implementations.

Instances should provide implementations for the generation functions that return choices with uniform probability.

Members

  • chooseInt :: Int -> Int -> m Int

    Chooses an integer in the specified (inclusive) range.

  • chooseFloat :: Number -> Number -> m Number

    Chooses an floating point number in the specified (inclusive) range.

  • chooseBool :: m Boolean

    Chooses a random boolean value.

  • resize :: forall a. (Size -> Size) -> m a -> m a

    Modifies the size state for a random generator.

  • sized :: forall a. (Size -> m a) -> m a

    Runs a generator, passing in the current size state.