Even in impure languages, writing simple functions without side effects is the ideal of functional programming — the language just doesn't force it. If you want to write imperative code, just call it imperative. Don't call it functional just because that's the cool buzzword nowadays.