This looks great!

One thing springs to mind with the accessors: Is it possible that the
generated accessor methods could participate in the implementation of
interfaces? For example:

   interface Vector
   {
     double x();
     double y();
     double z();
   }

   __data class Vector3 (double x, double y, double z)
     implements Vector { }

The Vector3 type would automatically get x(), y(), and z() methods
based on the field declarations. This may imply, of course, that the
fields are public by default.

This is exactly how it would work.  The Vector3 class acquires x(), y(), and z() accessors, and since the interface Vector specifies these, and Vector3 <: Vector, then those accessors are the implementations of the Vector methods.

Reply via email to