Frank D. Engel wrote (by private mail, but from the content I suppose it was meant for the list; excuse me if I'm wrong):
How about addition, since in 'subclassing' we would be adding fields:
TYPE base = NIL + RECORD i : INTEGER; j : INTEGER END;
child = base + RECORD x : REAL; y : REAL END; otherchild = base + NIL; hotdog = NIL + (x : INTEGER; y : REAL); cheesedog = hotdog + (t, q : CHAR);
Or something similar (prob. the first three preferred; the latter two are a wild shortcut idea).
At first sight, it's certainly a little strange ...
BTW, apart from the syntax, the topic reminds me of another thing. For some time, I've had the idea of extensible enum types (unlike with records, there's currently no alternative in GPC, except using integer constants, of course). Even if you have no "forks", that would be useful across modules (where you can't always declare the largest type first, and the other ones as subranges).
The situation would be a little different from records -- you could assign a value of a small type to a larger one, not vice versa. You wouldn't need `is' and `as', simple comparisons and assignments will do.
I don't know if any dialect has something like this. If not, and we'd make up something new, maybe we could use a common (or similar) syntax with extensible records ...
Frank