The modules below provide additional data structures, and other added
capabilities layered on top of the Par monad.
The Par monad offers a simple API for parallel programming. The library
works for parallelising both pure and IO computations, although only the
pure version is deterministic. The default implementation provides a
work-stealing scheduler and supports forking tasks that are much lighter
weight than IO-threads.
Monad classes using type families, with instances for various monad
transformers.
Monomorphic variants of the Functor, Foldable, and Traversable
typeclasses.
Monad classes using functional dependencies, with instances for various
monad transformers, inspired by the paper "Functional Programming with
Overloading and Higher-Order Polymorphism" by Mark P Jones, in Advanced
School of Functional Programming, 1995.
Mueval is a Haskell interpreter. It uses the GHC API to evaluate arbitrary
Haskell expressions. Importantly, mueval takes many precautions to defang
and avoid "evil" code. It uses resource limits, whitelisted modules,
special Show instances for IO, threads, processes, changes of directory,
and so on to sandbox the Haskell code. It is, in short, intended to be a
standalone version of Lambdabot's famous evaluation functionality. For
examples and explanations, please see the README file. Mueval is POSIX-only.
Implements MurmurHash2, a good, fast, general-purpose, non-cryptographic
hashing function. See <http://murmurhash.googlepages.com/> for details.
This implementation is pure Haskell, so it might be a bit slower than a C
FFI binding.
One of Haskell's strengths is immutable data structures. These
structures make it easier to reason about code, simplify concurrency and
parallelism, and in some cases can improve performance by allowing
sharing. However, there are still classes of problems where mutable
data structures can both be more convenient, and provide a performance
boost. This library is meant to provide such structures in a
performant, well tested way. It also provides a simple abstraction over
such data structures via typeclasses.
Per Conor McBride, the Newtype typeclass represents the packing and
unpacking of a newtype, and allows you to operatate under that newtype
with functions such as ala.
This package provides the ability to adapt to locale conventions such as
date and time formats.