I am not an OO fanatic but OO is extremely useful for juggling a bunch of information in the best bad way possible. And juggling information in that best bad way possible is a way different problem from functional programming paradigm of finding perfect, elegant solutions to well defined problems.
What's the difference between:
data Foo = Foo { a :: String, b :: String }
doSomething :: Foo -> String
doSomething foo = a foo ++ b foo
What's the difference between:
and If there's some deep fundamental difference between functional programming and OOP, it's not this.