Preface_make.ClownClown can produces Bifunctor or Profunctor using a Functor (or a Contravariant) on the first argument of the Bi/Profunctor as described in Clowns to the Left, Jokers to the Right (Functional Pearl)
Produces a Preface_specs.BIFUNCTOR using a Preface_specs.FUNCTOR as first argument.
module To_bifunctor
(F : Preface_specs.Functor.CORE) :
Preface_specs.BIFUNCTOR with type ('a, 'b) t = 'a F.tProduces a Preface_specs.PROFUNCTOR using a Preface_specs.CONTRAVARIANT as first argument.
module To_profunctor
(F : Preface_specs.Contravariant.CORE) :
Preface_specs.PROFUNCTOR with type ('a, 'b) t = 'a F.t