The reason for the declaration is not necessarily for the compiler but for error checking and detection later on. In a large program hunting down whether a variable is an integer or a float can be a needlessly time consuming process. That's why BlitzMax has the "Super Strict" option.