Contexts are useful for any architecture that needs an “abstract awareness” of its current state/scope.

A good example is generic macros. A macro may be given parameters, but it might also need to obtain information about the context that it’s running in. Also, the macro can store values that the next macro can obtain, etc.