> Also, “procedural” (or “imperative” or “functional”) is an attribute of programming languages, not applications/systems:
It can be an attribute of programs regardless of language. It is possible to write functional-style code in C and procedural code in Haskell (just do everything in the IO monad!).
> Haskell is a pure functional programming languages, in which evaluating functions has no side effects, but it can define systems that have effects.
That's a bit of a fiction. Pure functions are pure, yes, but you can have impure functions -- Haskell is only interesting because you can have impure functions (otherwise every Haskell program would compile down into a constant), and what's really interesting about Haskell is the ideas that have evolved in its community about how to deal with impure functions.