"Functional Programming" is great today precisely because it does not mean the same as it did in 1990 when it thoroughly sucked. Since then it adopted the one good thing about the "Object-Oriented Programming" hoax that really mattered: ad hoc polymorphism — through Type Classes.
The same smug idiots who were sneering at languages that had product types but not sum types had parametric polymorphism but not ad hoc polymorphism.
Read my blog!