combinat- Generate and manipulate various combinatorial objects.

Safe HaskellNone



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 (

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.