> Such a mixture of styles would immediately trigger an error in Nim, as Result 
> and result are the same variable.

No. No, it wouldn't. Nim is neither case sensitive nor case insensitive, but 
rather it goes for [Partial Case 
Insensitivity](https://nim-lang.org/docs/manual.html#lexical-analysis-identifier-equality).
 Specifically, **the first letter of an identifier is case sensitive, while the 
rest is not**. This means that your example is wrong because in Nim:
    
    
     var Result: int = 0
    for i in 0..<100:
      var result: int = f(x)
      if result < 0: result += g(x)
      Result += result
    
    
    Run

compiles just fine and works as expected (`Result != result`).

You're technically right about your second example (`myAccum == my_accum`), but 
this is very bad coding. **It 's not Nim's fault if you named different 
variables so similarly.**

This is ultimately a design decision. There are languages that try to babysit 
the programmer, thinking that they're smarter than them. One big example of 
this is Rust.

Nim is on the complete opposite of the spectrum. Nim rightly asserts that **not 
every problem should be solved by means of language design**. Most things are 
better relegated to coding practices, IDEs, syntax highlighters, 
autocompletion, etc. Naming variables is one of these things. **If you write 
code like the above, then no language feature will be enough to protect you 
from yourself**.

[Basically this](https://quotesondesign.com/phil-karlton/)

Reply via email to