In Eiffel (which is an object oriented language), methods on objects are separated into twokind: commands and queries. This is also known as the "Command-Query Separation" principle. The idea is that commands are the ones causing changes to the systems and queries only inform you about the system. `a_set.add(item)` changes the set, while `a_set.has(item)` tells you about the set but makes no changes to it. It's very useful, and very common. I mean, I'd hope that `some_collection.Size()` doesn't actually change its size, that's not what it exists to do.
Though I feel these definitions of OOP are closing on the Actor model, so exact definitions are not really possible to give here.
Not sure if that matters.
1. Read the fields of 'this' 2. Write the fields of 'this' 3. Call other methods of 'this' (including "private" methods in many OOP languages)
That is very characteristic of OOP languages. Does anybody know if FP languages have something like the 'this' and if not what do they use instead?