I wonder how an object can change its type without loosing its
identity. Consider two types Rectangle and Polygon with Rectangle
a subtype of Polygon. Now if there is a method add_vertex in the
Polygon type, calling it on a Rectangle warps the object out of
the Rectangle type into a Polygon with five vertices. How does
the implementation of Rectangle::add_vertex achieve this type

For a subset type the warping might occur automatically because
the where clause fails:

  subset Rectangle of Polygon where { .num_vertices == 4 && ... }

A class type might just call self.bless(Polygon) after adapting
the internal representation. But how does an object loose a role?
Should there be an undoes or strip operator that does the inverse
of runtime role composition?

Have a nice weekend.

Reply via email to