Interference (effects)
Interference is a phenomenon in effectful languages, whereby the combination of procedures and effects leads to subtle errors.
In full generality,
two procedures interfere when one can perform a global action which has a global effect upon the other.
The most common case of interference is aliasing: this happens when a procedure assumes two by-reference arguments are distinct, but the caller has provided the same reference for them.
References
- The concept of interference was introduced by John Reynolds in a POPL 1978 paper:
@inproceedings{reynolds_1978,
address = {New York, NY, USA},
title = {Syntactic {Control} of {Interference}},
doi = {10.1145/512760.512766},
booktitle = {Proceedings of the 5th {ACM} {SIGACT}-{SIGPLAN} {Symposium} on {Principles} of {Programming} {Languages}},
publisher = {Association for Computing Machinery},
author = {Reynolds, John C.},
year = {1978},
pages = {39--46}
}
- This paper was reprinted in Vol I of Algol-like languages:
@incollection{ohearn_syntactic_1997,
address = {Boston, MA},
title = {Syntactic {Control} of {Interference}},
booktitle = {Algol-like {Languages}},
publisher = {Birkhäuser Boston},
author = {Reynolds, John C.},
editor = {O’Hearn, Peter W. and Tennent, Robert D.},
year = {1997},
doi = {10.1007/978-1-4612-4118-8_11},
pages = {273--286},
}