enumeration: A practical API for building recursive enumeration procedures and enumerating datatypes.

[ bsd3, data, library, serialization, test, testing ] [ Propose Tags ]

A library providing tools for building enumeration procedures for recursively- enumerable datatypes. This is built atop the arith-encode library, and makes use of the natural number isomorphisms it provides to represent individual decisions in the enumeration procedure. As such, each enumeration result is denoted by a unique path, consisting of a sequence of natural numbers. An enumeration procedure is simply a (partial) mapping between sequences and a given datatype.

The library provides functionality for constructing enumeration procedures, as well as facilities for performing enumeration according to various search strategies (depth-first, breadth-first, etc). These procedures can also be "warm-started" using a path or a set of paths. Obvious applications include exhaustive search, testing, automated proving, and others.

Additionally, as a path is simply a sequence of natural numbers, an enumeration procedure can double as a binary serializer/deserializer. For well-behaved enumeration procedures (ie. those where the mapping is an isomorphism), the resulting binary format should be very nearly succinct.

Versions [faq] 0.1.0, 0.2.0
Dependencies arith-encode, base (>=4.9.0 && <5), binary, containers, heap, integer-logarithms [details]
License BSD-3-Clause
Copyright Copyright (c) 2014 Eric McCorkle. All rights reserved.
Author Eric McCorkle
Maintainer Eric McCorkle <emc2@metricspace.net>, Andrew Lelechenko <andrew.lelechenko@gmail.com>
Category Data, Serialization, Test, Testing
Home page https://github.com/emc2/enumeration
Bug tracker https://github.com/emc2/enumeration/issues
Source repo head: git clone git@github.com:Bodigrim/enumeration.git
Uploaded by Bodigrim at Sat Dec 21 13:16:01 UTC 2019
Distributions NixOS:0.2.0
Downloads 910 total (73 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2019-12-21 [all 1 reports]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees