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.

Reply via email to