Functional functions could not modify ANY data, including explicitly allocating variables. Although, come to think of it, this wouldn't imply pure, as they should still be allowed to read global data and call impure functions.