Here's an explanation of set! and set-structure! in terms of what goes on in the computer's memory. You won't be tested on this material -- these are just notes that may help some of you see the difference between them. When you make a structure, such as (make-account 3 100), Scheme makes a place in computer memory to store the account and its data. If you then give that structure a name, Scheme associates that name with the place (location) where it stored the data: Program: (define acct1 (make-account 3 100)) Memory: acct1 -----------> [account, 3, 100] ;; a chunk of memory If you put that defined name into another struct, Scheme makes another reference to that same location: Program: (define acct1 (make-account 3 100)) (define Mcust (make-customer "Maria" 5551234 acct1)) Memory: acct1 -----------> [account, 3, 100] ;; a chunk of memory | |----------------| | Mcust -----------> [Maria, 5551234, |] Set-structure! changes the contents of the structure (between the square brackets in our picture), but not the associations between names and locations. So (set-account-balance! acct1 150) changes our memory picture to look like Memory: acct1 -----------> [account, 3, 150] ;; a chunk of memory | |----------------| | Mcust -----------> [Maria, 5551234, |] Note that the connections between data in memory are unchanged, so changing acct1 causes the change to show up in acct1 (we'd see a similar change if we did set-account-balance! on the account in Mcust. Set!, in contrast breaks the association between names and locations. If we now do (set! acct1 (make-account 4, 800), Scheme moves the arrow from acct1 to refer to the new account: Memory: | -----------> [account, 4 800] | acct1 [account, 3, 150] ;; a chunk of memory | |----------------| | Mcust -----------> [Maria, 5551234, |] As you can see, the set! did not affect the account in Mcust. Further set-account-balance! operations on acct1 will not affect Mcust, despite the original connections between the data. Again, if this helps, great. If not, not something you'll need to know in detail.