I always liked CLU -- definitely VERY clear distinction on the internal representation of things vs the external.
I'd go further with the parameterized types statements. I believe it's somewhat akin to Go's use of interfaces and its form of protocol-based polymorphism. You define a class ("cluster" in CLU) and you can specify that any particular type that the class is based on (and/or maybe method parameter types, not sure) has specific operations; it is, or can be, more "protocol" based in defining classes; as long as the underlying type has operations x, y, and z (etc) with some specific set of parameter types, you can use it.
Definitely a bit ahead of its time in many ways!
Steve