Represents the result of some expression that either (a) succeeded and encapsulates some value,
or (b) finished, but has no value - because it was not possible to compute a value using the given
information - or (c) that failed.
Depending on the context, it may be useful to distinguish between a success that returns
an empty collection and a success that has no further information.