12.1 State, Change, and Testing
12.1.1 Example: Bank Accounts
12.1.2 Testing Functions that Mutate Data
12.1.3 Aliasing
12.1.4 Data Mutation and the Directory
12.1.4.1 Introducing the Heap
12.1.4.2 Basic Data and the Heap
12.2 Understanding Equality
12.2.1 Equality of Data
12.2.2 Different Equality Operations
12.2.2.1 Equality in Python
12.2.2.2 Equality in Pyret
12.3 Arrays and Lists in Memory
12.4 Cyclic Data
12.4.1 Creating Cyclic Data
12.4.2 Testing Cyclic Data
12.4.3 Cycles in Practice
12.5 Modifying Variables
12.5.1 Modifying Variables in Memory
12.5.2 Variable Updates and Aliasing
12.5.3 Updating Variables versus Updating Data Fields
12.5.4 Updating Parameters in Function Calls
12.5.5 Updating Top-Level Variables within Function Calls
12.5.6 The Many Roles of Variables