Maybench is a tool for comparing the performance between two versions of the same program, on a series of benchmarks that you design.
Maybench aims to be easy to use, almost as easy as running "time your-program arg1..arg2". Ideally, it should be a simple matter for outsiders to write timing tests for your programming project and contribute them as part of your performance testing suite.
The Darcs repository is available at http://code.haskell.org/maybench.
Version 0.2.4.1

The MaybeT monad transformer adds the ability to fail to a monad.
A sequence of actions succeeds, producing a value, only if all the actions in the sequence are successful. If one fails, the rest of the sequence is skipped and the composite action fails.
For a variant allowing a range of error values, see Control.Monad.Trans.Error.

The parameterizable maybe monad, obtained by composing an arbitrary monad with the Maybe monad.
Computations are actions that may produce a value or fail.
The return function yields a successful computation, while >>= sequences two subcomputations, failing on the first error.

Support for computations with failures.
Version 0.1.2

Support for computations with failures. This is a fork of the MaybeT package by Eric Kidd, but compatible with the type-family based monad classes of the monads-tf package.
This package is deprecated: the MaybeT transformer exists in the transformers package nowadays, and the only advantage this package provides over that one is the presence of a MonadFix instance, but it's incorrect anyway.
Version 0.2.0.1

Support for computations with failures. This package is a fork from the MaybeT package by Eric Kidd, changed to depend on transformers instead of mtl. It also adds a few more utility functions.
Version 0.2

optionMaybe p tries to apply parser p. If p fails without consuming input, it return Nothing, otherwise it returns Just the value returned by p.

Tries to generate a value that satisfies a predicate.