Safe Haskell | None |
---|---|
Language | Haskell2010 |
Scientist
Synopsis
- data ResultCandidate a = ResultCandidate {}
- data ResultControl a = ResultControl {}
- data ResultDetails c a b = ResultDetails {}
- data Result c a b
- = ResultSkipped (Control a)
- | ResultMatched (ResultDetails c a b)
- | ResultIgnored (ResultDetails c a b)
- | ResultMismatched (ResultDetails c a b)
- resultDetails :: Result c a b -> Maybe (ResultDetails c a b)
- resultDetailsCandidate :: ResultDetails c a b -> ResultCandidate b
- data Experiment m c a b
- newExperiment :: Functor m => Text -> m a -> Experiment m c a b
- setExperimentTry :: Functor m => m b -> Experiment m c a b -> Experiment m c a b
- setExperimentTryNamed :: Functor m => Text -> m b -> Experiment m c a b -> Experiment m c a b
- setExperimentEnabled :: m Bool -> Experiment m c a b -> Experiment m c a b
- setExperimentOnException :: (SomeException -> m ()) -> Experiment m c a b -> Experiment m c a b
- setExperimentCompare :: (Control a -> Either SomeException (Candidate b) -> Bool) -> Experiment m c a b -> Experiment m c a b
- setExperimentIgnore :: (Control a -> Either SomeException (Candidate b) -> Bool) -> Experiment m c a b -> Experiment m c a b
- setExperimentRunIf :: Bool -> Experiment m c a b -> Experiment m c a b
- setExperimentPublish :: (Result c a b -> m ()) -> Experiment m c a b -> Experiment m c a b
- getExperimentName :: Experiment m c a b -> Text
- getExperimentUse :: Experiment m c a b -> m (Control a)
- getExperimentTries :: Experiment m c a b -> Maybe (NonEmpty (NamedCandidate m b))
- getExperimentEnabled :: Applicative m => Experiment m c a b -> m Bool
- getExperimentOnException :: MonadIO m => Experiment m c a b -> SomeException -> m ()
- getExperimentCompare :: Experiment m c a b -> Control a -> Either SomeException (Candidate b) -> Bool
- setExperimentContext :: c -> Experiment m c a b -> Experiment m c a b
- getExperimentContext :: Experiment m c a b -> Maybe c
- getExperimentIgnore :: Experiment m c a b -> Control a -> Either SomeException (Candidate b) -> Bool
- getExperimentRunIf :: Experiment m c a b -> Bool
- getExperimentPublish :: Applicative m => Experiment m c a b -> Result c a b -> m ()
- experimentCompareEq :: Eq a => Control a -> Either SomeException (Candidate a) -> Bool
- experimentCompareOn :: Eq b => (a -> b) -> Control a -> Either SomeException (Candidate a) -> Bool
- experimentCompareBy :: (a -> b -> Bool) -> Control a -> Either SomeException (Candidate b) -> Bool
- experimentEnabledPercent :: MonadIO m => Int -> m Bool
- experimentRun :: MonadUnliftIO m => Experiment m c a b -> m a
- experimentRunInternal :: MonadUnliftIO m => Experiment m c a b -> m (Result c a b)
Documentation
data ResultCandidate a Source #
Constructors
ResultCandidate | |
data ResultControl a Source #
Constructors
ResultControl | |
Fields |
data ResultDetails c a b Source #
Constructors
ResultDetails | |
Constructors
ResultSkipped (Control a) | |
ResultMatched (ResultDetails c a b) | |
ResultIgnored (ResultDetails c a b) | |
ResultMismatched (ResultDetails c a b) |
resultDetails :: Result c a b -> Maybe (ResultDetails c a b) Source #
resultDetailsCandidate :: ResultDetails c a b -> ResultCandidate b Source #
data Experiment m c a b Source #
newExperiment :: Functor m => Text -> m a -> Experiment m c a b Source #
setExperimentTry :: Functor m => m b -> Experiment m c a b -> Experiment m c a b Source #
A new, candidate code path
If called multiple times, adds multiple candidate paths.
By default, there are no candidate paths and running the experiment will
return ResultSkipped
.
setExperimentTryNamed :: Functor m => Text -> m b -> Experiment m c a b -> Experiment m c a b Source #
setExperimentEnabled :: m Bool -> Experiment m c a b -> Experiment m c a b Source #
If the candidate paths should be executed
See experimentEnabledPercent
for an example.
By default, candidate paths are always run.
setExperimentOnException :: (SomeException -> m ()) -> Experiment m c a b -> Experiment m c a b Source #
How to handle an exception evaluating or publishing
By default, the exception is re-thrown.
setExperimentCompare :: (Control a -> Either SomeException (Candidate b) -> Bool) -> Experiment m c a b -> Experiment m c a b Source #
Decide if a given result is a match.
See experimentCompareEq
and experimentCompareBy
.
By default, all comparisons fail.
setExperimentIgnore :: (Control a -> Either SomeException (Candidate b) -> Bool) -> Experiment m c a b -> Experiment m c a b Source #
Decide if a given result should be ignored
By default, no results are ignored.
setExperimentRunIf :: Bool -> Experiment m c a b -> Experiment m c a b Source #
Decide if the experiment should run at all
By default, experiments are run.
setExperimentPublish :: (Result c a b -> m ()) -> Experiment m c a b -> Experiment m c a b Source #
How to publish results
By default, results are not published.
getExperimentName :: Experiment m c a b -> Text Source #
getExperimentUse :: Experiment m c a b -> m (Control a) Source #
getExperimentTries :: Experiment m c a b -> Maybe (NonEmpty (NamedCandidate m b)) Source #
getExperimentEnabled :: Applicative m => Experiment m c a b -> m Bool Source #
getExperimentOnException :: MonadIO m => Experiment m c a b -> SomeException -> m () Source #
getExperimentCompare :: Experiment m c a b -> Control a -> Either SomeException (Candidate b) -> Bool Source #
setExperimentContext :: c -> Experiment m c a b -> Experiment m c a b Source #
getExperimentContext :: Experiment m c a b -> Maybe c Source #
getExperimentIgnore :: Experiment m c a b -> Control a -> Either SomeException (Candidate b) -> Bool Source #
getExperimentRunIf :: Experiment m c a b -> Bool Source #
getExperimentPublish :: Applicative m => Experiment m c a b -> Result c a b -> m () Source #
experimentCompareEq :: Eq a => Control a -> Either SomeException (Candidate a) -> Bool Source #
Compare non-exception candidates with the control by (==)
Exception candidates fail comparison.
experimentCompareOn :: Eq b => (a -> b) -> Control a -> Either SomeException (Candidate a) -> Bool Source #
Compare by equality on some function
Exception candidates fail comparison.
experimentCompareBy :: (a -> b -> Bool) -> Control a -> Either SomeException (Candidate b) -> Bool Source #
Compare by some function
Exception candidates fail comparison.
experimentEnabledPercent :: MonadIO m => Int -> m Bool Source #
Enable the experiment in the given percentage of runs
experimentRun :: MonadUnliftIO m => Experiment m c a b -> m a Source #
experimentRunInternal :: MonadUnliftIO m => Experiment m c a b -> m (Result c a b) Source #
experimentRun
but returning the full Result
Used for testing.