That language isn’t really correct, and it makes it sound like these functions (including =) have a lot more magic than they actually do. They do the same thing in every context, so there’s no need to differentiate them. As commented on SO:
This isn’t exactly wrong… because the terminology is meaningless. There is no such thing in Julia as a “simple type”. And the functions are not magic: they do the same thing to every type. a=b sets the value of a to the value of b, copy(a) makes a new type with the same values for the fields, and deepcopy(a) does that copy recursively on each field. The only thing you need to know is that the value of an immutable is its values (fields), whereas the value of a mutable type is its pointer.