Functional programming \"avoids state and mutable data\".
Closures hide state by binding their lexical environment and are thus closed over their free variables
My working man's definition of "functional programming" is that if you put the same thing(s) in, you always get the same thing(s) out.
Closures do not violate this definition in Haskell (try and come up with a closure that does :) ), therefore closures don't violate the FP paradigm.