Thinking Functional

I think that the main change is that instead of having objects that themselves are responsible for their capabilities, you have data which can be transformed into other data if it has the correct format.

Thinking with transformations is a lot more extensible and flexible than thinking with a hierarchical model of objects.

In an OOP language (a true one like Ruby. In languages that have a difference between primitive types and objects like Java, you might need to use a.equals(b) instead), a comparison like a == b actually calls a method on object a. Which means that the result might be very different than b == a.
And you will need to define those methods in two places.

In a Functional language, you simply state what the result should be between a comparison of these two kinds of objects. In a single place.

4 Likes