Interesting ideas! Yes, I had wanted to mention the copying prototypes more-and-more point--I think it might well happen.
It is interesting that you are teaching both Smalltalk & Self-- we are very interested in finding out if Self might be a good language to introduce OO concepts.
The multiuser stuff is great--Randy & I have been thinking thoughts in this direction for years.
When we first started on Self, I toyed with the "point" gives you a new copy each time idea, but was scared off from it.
Anyway, got to go now, but what a neat discussion!
I have just been re-reading the OOPSLA'89 paper on Self and in section 3.3 it says that floats are immediates with a tag of (binary) 10 in the least significant two bits.
I was wondering what happens when a float is tagged. Is the mantissa truncated and then tagged: float x = ... tagged_x = ((unsigned) x & ~0x3) | 0x2;
or is the mantissa rounded so that it only uses the 21 bits and then tagged:
tagged_x = round_to_21(x) | 0x2;
or does something else happen?
How about un-tagging, what happens then?