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!
--