Functional programming \"avoids state and mutable data\".
Closures hide state by binding their lexical environment and are thus closed over their free variables
In Haskell, closures have free variables in the same way that in math you can write f x = x^2 - it doesn't mutate state.
f x = x^2
I would say that Haskell avoids mutable state.