Lazy SmallCheck is a library for exhaustive, demand-driven testing of
Haskell programs. It is based on the idea that if a property holds for
a partially-defined input then it must also hold for all fully-defined
refinements of the that input. Compared to `eager' input generation as
in SmallCheck, Lazy SmallCheck may require significantly fewer
test-cases to verify a property for all inputs up to a given depth.
This library provides a quick-and-dirty (but often effective) method for
extending Haskell's syntax using a custom preprocessor. It parses
Haskell into a bare-bones AST with just enough knowledge of the syntax
to preserve nesting, and then allows transformations on the AST.
This package contains the generics system described in the "Scrap Your
Boilerplate" papers. It defines the "Data" class of types permitting
folding and unfolding of constructor applications, instances of this
class for primitive types, and a variety of traversals.
This package provides strict versions of some standard Haskell data
types (pairs, Maybe and Either). It also contains strict IO operations.
UUAG is the Utrecht University Attribute Grammar system. It generates Haskell
files from an attribute grammar specification.
It is a preprocessor for Haskell which makes it easy to write catamorphisms
(that is, functions that do to any datatype what foldr does to lists).
You can define tree walks using the intuitive concepts of inherited and
synthesized attributes, while keeping the full expressive power of Haskell.
Generates Haskell files from an attribute grammar specification.
ncurses (new curses) is a free software emulation of curses in
System V Rel 4.0 (and above). It uses terminfo format, supports
pads, colors, multiple highlights, form characters and function
key mapping. Because of the interactive nature of this library,
it will be of little use for writing Web applications, but may
be useful when writing scripts meant using PHP from the command
line.
GNU `m4' is an implementation of the traditional UNIX macro
processor. It is mostly SVR4 compatible, although it has some
extensions (for example, handling more than 9 positional parameters to
macros). `m4' also has builtin functions for including files, running
shell commands, doing arithmetic, etc.
libarena is a custom memory allocator interface and implementation. Four
allocators are provided: flat LIFO arena allocator, object pool allocator
and two malloc(3) wrappers: one which returns the pointers unadulterated
and one which obeys the requested, arbitrary alignment. These can be used
directly, or through their exported prototype interfaces.
libarena is meant to provide a baseline interface so allocators can be
stacked, and to provide a simple and well defined interface for libraries
and applications without becoming mired in features or capabilities. It is
not meant to restrict or confine what custom allocators can actually
accomplish. For instance, the included pool and arena allocators include a
suite of string utilities which aren't available in the generic exportable
interface. Note that these string utilities are built upon a generic
interface (see util.h) which can take the prototypical allocation context,
so they are also available to any 3rd party compatible allocators.