RWO has a chapter if you have not read it. 

https://realworldocaml.org/v1/en/html/first-class-modules.html

On Fri, Dec 22, 2017 at 1:13 AM, Evgeny Roubinchtein <zhenya1007@gmail.com> wrote:
Dear OCaml users and developers,

I find the "Advanced examples" sub-section of the "First-class modules" section in the reference manual (http://caml.inria.fr/pub/docs/manual-ocaml/extn.html#sec244) to be a bit short on motivation. 

I appreciate that it may be, "possible to parametrize some code over the implementation of a module without using a functor", but I am having trouble imagining why one would want to do such a thing.  Also, the "without using a functor" part comes across (to me) as a bit hollow, given that the example provided _does_ in fact use [Set.Make] functor: it just hides the invocation of that functor inside the definition of the [make_set] function, so it reads (to me) like just a round-about way to invoke the [Set.Make] functor.

Also, was a description of first-class modules in OCaml published in either a paper or a thesis, or perhaps a journal article?

Thank you in advance!

--
Best,
Evgeny ("Zhenya")