Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- class Monad m ⇒ MonadGenError m where
- genError ∷ HasCallStack ⇒ [String] → m a
- fatalError ∷ HasCallStack ⇒ [String] → m a
- explain ∷ HasCallStack ⇒ [String] → m a → m a
- data GE a
- catGEs ∷ MonadGenError m ⇒ [GE a] → m [a]
- fromGE ∷ ([String] → a) → GE a → a
- errorGE ∷ GE a → a
- isOk ∷ GE a → Bool
- runGE ∷ MonadGenError m ⇒ GE r → m r
- fromGEProp ∷ Testable p ⇒ GE p → Property
- fromGEDiscard ∷ Testable p ⇒ GE p → Property
- headGE ∷ Foldable t ⇒ t a → GE a
- data GenMode
- newtype GenT m a = GenT {}
- strictGen ∷ GenT m a → Gen (m a)
- genFromGenT ∷ GenT GE a → Gen a
- resizeT ∷ (Int → Int) → GenT m a → GenT m a
- pureGen ∷ Applicative m ⇒ Gen a → GenT m a
- listOfT ∷ MonadGenError m ⇒ GenT GE a → GenT m [a]
- listOfUntilLenT ∷ MonadGenError m ⇒ GenT GE a → Int → (Int → Bool) → GenT m [a]
- vectorOfT ∷ MonadGenError m ⇒ Int → GenT GE a → GenT m [a]
- suchThatT ∷ MonadGenError m ⇒ GenT m a → (a → Bool) → GenT m a
- scaleT ∷ (Int → Int) → GenT m a → GenT m a
- getMode ∷ Applicative m ⇒ GenT m GenMode
- withMode ∷ GenMode → GenT m a → GenT m a
- oneofT ∷ MonadGenError m ⇒ [GenT GE a] → GenT m a
- frequencyT ∷ MonadGenError m ⇒ [(Int, GenT GE a)] → GenT m a
- chooseT ∷ (Random a, Ord a, Show a, MonadGenError m) ⇒ (a, a) → GenT m a
- sizeT ∷ Monad m ⇒ GenT m Int
- tryGen ∷ MonadGenError m ⇒ GenT GE a → GenT m (Maybe a)
Documentation
class Monad m ⇒ MonadGenError m where Source #
A class for different types of errors with a stack of explain
calls to
narrow down problems.
genError ∷ HasCallStack ⇒ [String] → m a Source #
fatalError ∷ HasCallStack ⇒ [String] → m a Source #
explain ∷ HasCallStack ⇒ [String] → m a → m a Source #
Instances
MonadGenError GE Source # | |
Defined in Constrained.GenT genError ∷ HasCallStack ⇒ [String] → GE a Source # fatalError ∷ HasCallStack ⇒ [String] → GE a Source # | |
MonadGenError m ⇒ MonadGenError (GenT m) Source # | |
Defined in Constrained.GenT genError ∷ HasCallStack ⇒ [String] → GenT m a Source # fatalError ∷ HasCallStack ⇒ [String] → GenT m a Source # explain ∷ HasCallStack ⇒ [String] → GenT m a → GenT m a Source # |
The Gen Error monad, distinguishes between fatal errors and non-fatal errors.
Instances
Alternative GE Source # | |
Applicative GE Source # | |
Functor GE Source # | |
Monad GE Source # | |
MonadGenError GE Source # | |
Defined in Constrained.GenT genError ∷ HasCallStack ⇒ [String] → GE a Source # fatalError ∷ HasCallStack ⇒ [String] → GE a Source # | |
Show a ⇒ Show (GE a) Source # | |
Eq a ⇒ Eq (GE a) Source # | |
Ord a ⇒ Ord (GE a) Source # | |
catGEs ∷ MonadGenError m ⇒ [GE a] → m [a] Source #
runGE ∷ MonadGenError m ⇒ GE r → m r Source #
Generation mode - how strict are we about requiring the generator to succeed. This is necessary because sometimes failing to find a value means there is an actual problem (a generator _should_ be satisfiable but for whatever buggy reason it isn't) and sometimes failing to find a value just means there are no values. The latter case is very relevant when you're generating e.g. lists or sets of values that can be empty.
Instances
MonadGenError m ⇒ MonadFail (GenT m) Source # | |
Monad m ⇒ Applicative (GenT m) Source # | |
Functor m ⇒ Functor (GenT m) Source # | |
Monad m ⇒ Monad (GenT m) Source # | |
MonadGenError m ⇒ MonadGenError (GenT m) Source # | |
Defined in Constrained.GenT genError ∷ HasCallStack ⇒ [String] → GenT m a Source # fatalError ∷ HasCallStack ⇒ [String] → GenT m a Source # explain ∷ HasCallStack ⇒ [String] → GenT m a → GenT m a Source # |
listOfUntilLenT ∷ MonadGenError m ⇒ GenT GE a → Int → (Int → Bool) → GenT m [a] Source #
Generate a list of elements of length at most goalLen
, but accepting failure
to get that many elements so long as validLen
is true.
TODO: possibly one could return "more, fewer, ok" in the validLen
instead
of Bool
frequencyT ∷ MonadGenError m ⇒ [(Int, GenT GE a)] → GenT m a Source #