Isn't the whole point of a configuration file that it remains declarative, in
order to keep it simple for admins, non-programmers and programmers alike to
grok? Ie that someone else does the work of providing the logic, and the person
writing the config file only enters the data, in a format that's suitable for
for entering data?
With an imperative style, you're no longer writing down what the configuration
should be - instead, you're writing instructions for how to arrive at the
desired configuration.
`switch("clang.cpp.options.linker", "-Oz -s ASM_JS=1 --separate-asm")` is
certainly more difficult than `clang.cpp.options.linker = "-Oz -s ASM_JS=1
--separate-asm"`, from a teaching perspective.
In fact, `config.nims` could more adequately be described as a plugin or
scripting system than a configuration file - with all the implications that
stem from that.