Preface_specs.Freer_selectiveA Freer selective allows you to build a rigid Preface_specs.Selective from a given arbitrary type.
Such Preface_specs.selective is equipped with and additional function for promoting values from the underlying type into the Freer selective and a Natural transformations for transforming the value of the Freer selective to an other Preface_specs.Selective or to a Preface_specs.Monoid.
Although free constructs are elegant, they introduce an execution cost due to the recursive nature of defining the type of a Freer Selective, map and select (so it also applies to derived combinators) have O(n) complexity. There are cheaper encodings but they are not, for the moment, available in Preface.
module type TO_SELECTIVE = sig ... endThe natural transformation for Freer Selective to Selective.
module type TO_MONOID = sig ... endThe natural transformation for Freer Selective to Monoid.
module type CORE = sig ... endThe Freer selective API without the Preface_specs.Selective API.
module type API = sig ... endThe complete interface of a Freer selective.