Just because a functional language is functional ([maybe] even completely pure like Haskell!), it doesn’t mean that programs written in that language must be pure when [run].
Haskell’s approach, for example, when dealing with side-effects, can be explained rather simply: Let the whole program itself be pure (meaning that functions always return the same values for the same arguments and don’t have any side effect), but let the return value of the
main function be an action that can be [run].
— answered Dec 6 ’11 at 21:32, dflemstr
— Stack Overflow
2013.09.03 Tuesday ACHK