Is Julia lazy?

I know, but all the Integer types in Julia almost satisfy the axioms of arithmetic (except for overflow problems). It depends on what users are willing to accept. A user needs to be aware of the risk overflow, and then, if the Int used by the user are small enough, he will be almost sure that all the functions he will called will return coherent result with the axioms of arithmetic. This is the same deal with Float64. Multiplications of Float64 are not necessarily associative, but the user can expect that functions defined for Real are almost associative. If the user is not willing to accept this risk, then he needs to use low level functions specialized for Float64, and manage the rounding errors.
For a modular field, this is a very wild guess to assume Integer functions will work “almost” as we think they will…