On Sat, Feb 02, 2002 at 09:55:14AM -0500, [log in to unmask] wrote:
> I must admit that I have not done this often (though I have done it), but I
> see more than "limited" value in creating a type, defining operations for
> it, and then deriving independent types that inherit the same operations.

In a software tool we are developing (for static worst-case execution-time
analysis) I count some 60 derivations of new untagged types, many from
predefined types like Natural or Positive. The reason for using
derived types in most cases is to enforce strong type checks for indices
and counters where we have no a priori reason to set a specific range
(as in "type T is range 1 .. 100"). Another reason is to override the
predefined stream I/O attributes (Read, Write etc.) with procedures
that apply specific lay-outs, byte ordering, or checks such as accumulating
a check-sum of the bytes read or written.

In other applications, I have used type derivation of record types to
enjoy the automatic lay-out conversion that occurs on conversion between
related record types with different record representation clauses.

So I have found derived types useful even in the non-tagged case.

Niklas Holsti
Working at but not speaking for Space Systems Finland Ltd.