1. A computer-readable medium having a data structure for defining location types for representing sets of memory locations, the computer-readable medium comprising: a first type variable, wherein the first type variable has an associated first location type, wherein the first type variable is arranged to represent a first set of memory locations, and wherein the first type variable comprises: an equivalence class representative (ECR); and a data constructor; wherein the data constructor comprises: a reader component that has an associated second location type, wherein the second location type has a second type associated with a second type variable and represents a second set of memory locations; and a writer component that has an associated third location type, wherein the third location type has a third type associated with a third type variable and represents a third set of memory locations.