`static: const block`

`proc ... {.compileTime.}: const proc`

I strongly disagree about these two. What's wrong with the `static` keyword? It 
comes from C and that's what has always been used to signal things that should 
be either included into the binary itself or be executed at compile time.

Also, you don't need to annotate a procedure with `{.compileTime.}` in order to 
use it statically. For example, you can write: 
    
    
    import hashes
    
    const myhash = hash("foobar")
    
    static:
      echo "Compile time: ", myhash
    
    echo "Run time: ", myhash
    
    
    Run

All you need to do is use the `const` keyword and Nim will try to run the proc 
at compile-time.

On the other hand, I can understand you feeling weird about `when`, since it's 
a very rarely used keyword and it has completely different semantics in C#, but 
if you really want to propose a different syntax, wouldn't something like 
`static if` make more sense? The keyword `const` usually refer to a value, and 
`if` statements in Nim don't return values (there are `if` expressions, but 
those are a different thing). But let's be honest: is `when` really a problem? 
[The manual explains it very well and in a very synthetic 
manner](https://nim-lang.org/docs/manual.html#statements-and-expressions-when-statement)
 I don't think it would be a good thing for Nim to change its syntax to appease 
every single guy who comes along.

Reply via email to