Too easy in Nanoc to get undefined behavior
The “Nanoc way” means treating all data as immutable and relying on the chains of filters to get the intended result. The immutability is nice because it allows Nanoc to make assumptions for optimization (especially regarding outdatedness checking and incremental compilation). Nanoc freezes all data to prevent modifications that would render those optimizations invalid.
Unfortunately, there are still many ways around it, e.g. by using global variables.