Shake is a Haskell library for writing build systems - designed as a
replacement for make. To use Shake the user writes a Haskell program that
imports the Shake library, defines some build rules, and calls shake.
Thanks to do notation and infix operators, a simple Shake program is not
too dissimilar from a simple Makefile. However, as build systems get more
complex, Shake is able to take advantage of the excellent abstraction
facilities offered by Haskell and easily support much larger projects.
The Shake library provides all the standard features available in other
build systems, including automatic parallelism and minimal rebuilds. Shake
provides highly accurate dependency tracking, including seamless support
for generated files, and dependencies on system information (e.g. compiler
version).
This Haskell package provides ShowQ, ShowFun, and SimpleReflect.
* ShowFun gives a Typeable-dependent instance for showing
functions as their type.
* ShowIO does the same for IO actions.
* ShowQ adds SmallCheck & QuickCheck support.
* SimpleReflect allows us to literally see how functions
'expand', through appropriate Show magic.
Prevent or capture writing to stdout and other handles.
This package allows simple reflection of expressions containing variables.
Reflection here means that a Haskell expression is turned into a string.
The primary aim of this package is teaching and understanding; there are
no options for manipulating the reflected expressions beyond showing them.
SmallCheck is a testing library that allows to verify properties for all
test cases up to some depth. The test cases are generated automatically
by SmallCheck.
A collection of various methods for splitting lists into parts, akin to
the "split" function found in several mainstream languages. Here is its
tale:
Once upon a time the standard Data.List module held no function for
splitting a list into parts according to a delimiter. Many a brave
lambda-knight strove to add such a function, but their striving was in
vain, for Lo, the Supreme Council fell to bickering amongst themselves
what was to be the essential nature of the One True Function which could
cleave a list in twain (or thrain, or any required number of parts).
And thus came to pass the split package, comprising divers functions for
splitting a list asunder, each according to its nature. And the Supreme
Council had no longer any grounds for argument, for the favored method
of each was contained therein.
Combinator library and utility functions for splitting lists.
Additional types of channels for STM.
A modular composable concurrency abstraction.
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.
Provides low-dependency functionality commonly needed by various streaming
data libraries, such as conduit and pipes.