Supplemental reading: section 2.3.0 (i.e., stop at 2.3.1) from Programming Language Pragmatics 2.3