I think `when` would be a good name for this even if Sass didn't exist - CSS is not a procedural language, it is a flow language. That is, the conditional block is applied reactively to the condition changing, not just the first time the file is evaluated. Sass's usage of `if` is the latter, which is how a programmer intuitively thinks about `if`, and since the CSS construct is the former, it makes sense to use a different word to highlight that there is a difference.
There are many non-procedural languages or environments that still have 'if'. E.g. SQL's IF-THEN-ELSE, XSL's 'xsl:if', or C preprocessor's '#if'. Is there a language similar to CSS that uses something different than 'if' to solve a similar problem?
All of those things are procedural in exactly the way I described. SQL is the very definition of procedural, I don't know what you're getting at there. Each thing you mentioned has an `if` statement that runs at one defined point in its execution. If it executes multiple times that's because it's part of a construct that runs everything inside it multiple times. XSL is the closest thing to a CSS-style rules engine, but you still use it once to create a new document, whereas the CSS rules are reevaluated live as anything about the context changes.
> SQL is the very definition of procedural, I don't know what you're getting at there
I assumed you were referring to programming paradigms. "Procedural" is part of the "imperative" paradigm [1]. "declarative" is different from "imperative" [1]. SQL is, for the most part, "declarative" [2].
> If it executes multiple times that's because it's part of a construct that runs everything inside it multiple times.
How is that different from CSS? Aren't CSS rules also part of some larger construct and they get run multiple times (i.e. once the context changes)?