Source: https://www.cs.cmu.edu/~rwh/papers/intensional/popl95.pdf