In Chapter 23 of "Object Oriented Software Construction" (1988), Betrand Meyer makes a distinction between side effects, concrete side effects, and abstract side effects.
Meyer defines a side effect in the following quote:
A change performed by a function is known as a side effect to indicate that it is ancillary to the function’s official purpose of answering a query."
And he defines a concrete side effect in a definition box as:
A function produces a concrete side effect if its body contains any of the following: an assignment, assignment attempt or creation instruction whose target is an attribute, or a procedure call.
This distinction is hard for me to understand though, since I cannot think of an examples of functions which produce side effects but which do not produce concrete side effects. Meyer does not give us any either.
Would Meyer say that side effect and concrete side effect are synonymous? Or are there a class of side effects which are not concrete side effects?
(Note, the answer is not abstract side effects, since abstract side effects are themselves concrete side effects.)