Think about this: if a function calls another function that produces a side effect, both functions become impure (non-functional). Simply separating them isn't enough. That's the difference when thinking of it in functional terms
Normally what functional programmers will do is pull their state and side effects up as high as they can so that most of their program is functional
Normally what functional programmers will do is pull their state and side effects up as high as they can so that most of their program is functional