exenumversion

Build efficient enumerations for datatypes. Inspired by Feat for Haskell.

The exenum library offers constructors to build enumerations for datatypes, that is, functions from (arbitrarily large) integers to values. Such enumerations are typically used for unit testing. The library is efficient: the n-th element of an enumeration is returned without having computed the (n-1) previous elements. Complexity is in log(n), except for some pathological datatypes. See the homepage for details: https://github.com/lebotlan/ocaml-exenum Inspired by Feat: Functional Enumeration of Algebraic Types, by Duregard, Jansson, Wang, Chalmers University.

As an example, consider the following datatype: type term = Var of string | App of term * term | Lambda of string * term

Using exenum, one may easily generate zillions of different lambda-terms. In our specific example, term number 2000000000000 happens to be ((((x v) (fun u -> y)) ((fun u -> y) (fun y -> y))) (((x v) (fun u -> v)) (fun u -> y)))

AuthorDidier Le Botlan <github.lebotlan@dfgh.net>
LicenseMIT
Published
Homepagehttps://github.com/lebotlan/ocaml-exenum
Issue Trackerhttps://github.com/lebotlan/ocaml-exenum/issues
MaintainerDidier Le Botlan <github.lebotlan@dfgh.net>
Dependencies
Optional dependencies
Conflicts
Source [http] https://github.com/lebotlan/ocaml-exenum/archive/0.86.tar.gz
sha256=42a0112e2e4e85d43b5dbe207c7d118816253145ed89887b1036745de34df80f
md5=a4854a0286dfd8bcb3f34003365195a9
Edithttps://github.com/ocaml/opam-repository/tree/master/packages/exenum/exenum.0.86/opam
No package is dependent