combinat- Generate and manipulate various combinatorial objects.

Safe HaskellNone



A collection of functions to generate and manipulate combinatorial objects like partitions, compositions, permutations, Young tableaux, various trees, 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. while being efficient;
  3. to be able to enumerate the structures with constant memory usage;
  4. and to be able to randomly sample from them.
  5. finally, be a repository of algorithms

The short-term goal is simply to generate 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 common modules.