It isn't clear to a newcomer whether cases fall through. That is: if : a(0) : #whatever a(4) : #whatever a(8) : #whatever : #whatever Run
Sure, if you know in advance that `a(0)` does not carry down to `a(4)`, then fine. Otherwise, it seems to me that you're taking that first step towards the dark side, and before long you'll be running an annual Obfuscated Nim code contest. Put differently, `else if` does not add that many symbols that need deciphering, and their meanings are naturally deciphered. Your approach doesn't add symbols (yay) but makes it a little harder to decipher (boo). Sort of like this: a = ( b > c ) ? d : e ; Run Sure, I can figure out what it means, but this Ada code (for instance) is so much easier to understand right off the bat: a := ( if b > c then d else e ); Run