1. A method of compiling a computer program, the method comprising: (a) identifying in a first representation of the computer program a routine call that passes an expression as an input parameter to a routine in the first representation of the computer program; (b) generating within a second representation of the computer program an implementation of the routine that calculates the expression; and (c) generating within the second representation of the computer program an implementation of the routine call that passes at least one argument for the expression to the implementation of the routine.