Added type constraints to the compiler.
Now the compiler will print different warning messages if the types of the operands differ from the expected ones.