In reply to Ian Wakeling.

Because of order of evaluation, you have to tell the IML language what you mean by r+c. You might want a matrix, but others might want a vector. For example, someone might want to use the ROWVEC or COLVEC functions to write
y = x/(colvec(r)+c);

Another (semi-random) thought: the SHAPE function "repeats values as needed" in order to achieve a desired shape:
m = shape(r,n,m);

The IML development team is always open to suggestions to improve the language. If you think it would be useful, send me an email describing the proposed COERCE function and how you envision it would work.