lol

module-system.chapter.md: Add mental model to `type` and `extendModules`

+5
+5
doc/module-system/module-system.chapter.md
··· 64 64 65 65 However, the value returned from the type is just the [`config`](#module-system-lib-evalModules-return-value-config), like any submodule. 66 66 67 + If you're familiar with prototype inheritance, you can think of this `evalModules` invocation as the prototype, and usages of this type as the instances. 68 + 67 69 This type is also available to the [`modules`](#module-system-lib-evalModules-param-modules) as the module argument `moduleType`. 70 + <!-- TODO: document the module arguments. Using moduleType is like saying: suppose this configuration was extended. --> 68 71 69 72 #### `extendModules` {#module-system-lib-evalModules-return-value-extendModules} 70 73 71 74 A function similar to `evalModules` but building on top of the already passed [`modules`](#module-system-lib-evalModules-param-modules). Its arguments, `modules` and `specialArgs` are added to the existing values. 75 + 76 + If you're familiar with prototype inheritance, you can think of the current, actual `evalModules` invocation as the prototype, and the return value of `extendModules` as the instance. 72 77 73 78 The real work of module evaluation happens while computing the values in `config` and `options`, so multiple invocations of `extendModules` have a particularly small cost, as long as only the final `config` and `options` are evaluated. 74 79