I was reading @notjack's post about what they call prelude modules, and I find the term to be an interesting addition to the nomenclature, should it take hold. One can become friends with a named concept.
Long-story short, the term describes the module prelude imported by a module foo upon instantiation (if that's the right word), which provides its initial bindings:
(module foo prelude
... body ...)
The comparison being drawn toward the end of the post, is to Haskell, which of course employs this term to mean something very similar.
What do you think about this term; have you any pet term that you like to use to describe this concept? I see the docs simply say, "initial module", for what it's worth.
On a more whimsical note, it might be cool to have something like:
I would call that the module's "language" or perhaps "initial language". The term "language" is overloaded nowadays; we tend to think of "language" as something that can follow #lang, so maybe "initial language module" to disambiguate. (Any module that exports a binding for #%module-begin can act as a "language module".)
Something like this already exists, in the form of "meta-languages" such as s-exp and at-exp. For example, the line
#lang at-exp racket/base
starts a module declaration using the at-exp reader (like Scribble) with racket/base as the initial language module.
As far as I remember, the use of the term 'prelude' dates back to 1968.
in the Algol 68 Report, the standard initially available definitions
were gathered together in what they decided to call the standard prelude,
whih was considered to precede the regulr program, and defined things like
addition, real, complex, and so forth.
There was also a standard postlude, consisting of the definition of the
label exit, which on could goto to end pogram execution.
These were not called modules back then; modules in the modern sense
hadn't really been invented yet.
I would call that the module's "language" or perhaps "initial language". The term "language" is overloaded nowadays; we tend to think of "language" as something that can follow #lang, so maybe "initial language module" to disambiguate.
I think the word "language" is too overloaded to be suitable for this, personally. Especially because this concept can show up in places where #lang isn't involved at all, such as submodules or files written without #lang. That's why I like having a more concise and specific word like "prelude" for it.
Besides the overloadedness, I feel like the semantics of the word "prelude" tends to put one closer to the attractor of the space, than say "language".
Although not strictly relevant, the etymology of "prelude" derives from the Latin praeludere, meaning "to play beforehand for practice, preface," which is neat.