-- | A collection of functions to generate, manipulate,
-- visualize and count combinatorial objects like partitions,
-- compositions, permutations, braids, Young tableaux,
-- lattice paths, various tree structures, etc etc.
--
--
-- See also the @combinat-diagrams@ library for generating
-- graphical representations of (some of) these structure using
-- the @diagrams@ library (<http://projects.haskell.org/diagrams>).
--
--
-- The long-term goals are
--
-- (1) generate most of the standard structures;
--
-- (2) manipulate these structures;
--
-- (3) visualize these structures;
--
-- (4) the generation should be efficient;
--
-- (5) to be able to enumerate the structures
-- with constant memory usage;
--
-- (6) to be able to randomly sample from them;
--
-- (7) finally, to be a repository of algorithms.
--
--
-- The short-term goal is simply to generate
-- and manipulate many interesting structures.
--
--
-- Naming conventions (subject to change):
--
-- * prime suffix: additional constrains, typically more general;
--
-- * underscore prefix: use plain lists instead of other types with
-- enforced invariants;
--
-- * \"random\" prefix: generates random objects
-- (typically with uniform distribution);
--
-- * \"count\" prefix: counting functions.
--
--
-- This module re-exports the most commonly used modules.
--
module Math.Combinat
( module Math.Combinat.Numbers
, module Math.Combinat.Sign
, module Math.Combinat.Sets
, module Math.Combinat.Tuples
, module Math.Combinat.Compositions
, module Math.Combinat.Partitions
, module Math.Combinat.Permutations
, module Math.Combinat.Tableaux
, module Math.Combinat.Trees
, module Math.Combinat.LatticePaths
, module Math.Combinat.ASCII
)
where
import Math.Combinat.Numbers
import Math.Combinat.Sign
import Math.Combinat.Sets
import Math.Combinat.Tuples
import Math.Combinat.Compositions
import Math.Combinat.Partitions
import Math.Combinat.Permutations
import Math.Combinat.Tableaux
import Math.Combinat.Trees
import Math.Combinat.LatticePaths
import Math.Combinat.ASCII