Maybe -base -parsec
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.
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 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
O(n). Map values and collect the Just results.
> let f x = if x == "a" then Just "new a" else Nothing
> mapMaybe f (fromList [(5,"a"), (3,"b")]) == singleton 5 "new a"
O(n). Map values and collect the Just results.
> let f x = if x == "a" then Just "new a" else Nothing
> mapMaybe f (fromList [(5,"a"), (3,"b")]) == singleton 5 "new a"
O(n). Map keys/values and collect the Just results.
> let f k _ = if k < 5 then Just ("key (:) " ++ (show k)) else Nothing
> mapMaybeWithKey f (fromList [(5,"a"), (3,"b")]) == singleton 3 "key (:) 3"
O(n). Map keys/values and collect the Just results.
> let f k _ = if k < 5 then Just ("key (:) " ++ (show k)) else Nothing
> mapMaybeWithKey f (fromList [(5,"a"), (3,"b")]) == singleton 3 "key (:) 3"
Tries to generate a value that satisfies a predicate.