Module documentation for 0.1.0.0

enum-subset-generate

Generates an ADT having a subset of constructors of some other ADT along with a
pair of functions to map between the two.

Motivation

Consider implementing FFI bindings for a library. The lower level (directly
mapping the C API onto Haskell) might expose an enumeration as an ADT, not all
values of which might make sense for higher-level well-typed code. In this case
the higher-level bindings might instead expose the generated ADT.

As an example, consider a parser library for a language like C++ or Java. A
cursor pointing to a node in an AST might have a property like

so this accessSpecifier is guaranteed to always produce a non-Invalid
result. But since it’s not explicitly stated in the types, the calling code will
not be able to know about this, so the compiler’s case analyzer might still
require handling the case of Invalid.