I think using the same name or the same character for different things can
cause confusion even if they are related. Nim uses `[` and `]` for both array
and generics and that caused the method call syntax conflicts with explicit
generic instantiations. So the `[: ]` notation has been designed.
<https://nim-lang.org/docs/manual.html#procedures-method-call-syntax>
If `return` was used instead of `result` in following code, you cannot call
procedual type `result` in command invocation syntax.
proc foo: proc (x: int) =
result = proc (x: int) = echo x
# Call above procedure
result 10
Run