I can understand **foldl**. When a compiler emits warnings, it could be because 
there's a **possibility of a bug** from the programmer in the code or **another 
reason** like "optimization in code generation not possible" because of 
something in the code. That's not an error, but that's a message that the 
compiler author emits to the programmer about something that he feels 
**important but not critical**.

Faced to these different types of warnings, the programmer should do two things:

1\. Analyze his code and check the justification for the warning. In the case 
of the _optimization warning_ , perhaps rewriting the source will make the 
warning disappear while benefiting from a better generated code.

2\. He knows that his code is correct and the compiler is emitting a warning 
that does not apply for that case. He should silence that individual warning. 
That what we do when we use some Nim pragmas like `{.noinit.}`.

Disabling all warnings as a whole without trying to understand why they appear 
is like not trusting the compiler author, being Nim or GCC. Like 
**rayman22201** said, you must trust that Nim is generating efficient C code 
and issuing reasonable warnings, just like you must trust GCC is generating 
efficient binary code with reasonable warnings. Silencing blindly **all** 
warnings, either Nim's or GCC's, is like closing one eye because using one is 
enough to see...

Reply via email to