The copy command creates a copy of its argument, which is typically a list of some type. If B is a list and A := B, then A and B point to the same list, and so changing one will change the other. But if A:= copy(B), then A and B will point to different lists with the same values, and so can be changed individually.
Example.
Input:
B:= [[4,5],[2,6]] |
A:= B |
C:= copy(B) |
A, B, C |
Output:
⎡ ⎢ ⎣ |
| ⎤ ⎥ ⎦ | , | ⎡ ⎢ ⎣ |
| ⎤ ⎥ ⎦ | , | ⎡ ⎢ ⎣ |
| ⎤ ⎥ ⎦ |
Input:
B[1] =< [0,0] |
A, B, C |
Output:
⎡ ⎢ ⎣ |
| ⎤ ⎥ ⎦ | , | ⎡ ⎢ ⎣ |
| ⎤ ⎥ ⎦ | , | ⎡ ⎢ ⎣ |
| ⎤ ⎥ ⎦ |