I'm still working on the type system. But I find multiple ways of procrastinating. One of them is my work on 'bitcopiable'. And, as this is a good feature, I'm going to drop a few words here about it
The problem
Objects can be self-referentiable. That is, an object, can have a pointer, directly or indirectly to itself. One of the best examples is a node in a circular linked list. The content of the node will contain a pointer that will point to the node itself.
Another example, relatively common, is the following:
datatype Parent
children: Vector(Child)
datatype Child
parent: Parent Ptr
datatype Child parent: Parent Ptr [/code]
Again, a typical Parent object will point to itself. That is what we call a self-referentiable object. An object for which there is a one-to-one mapping between its value and the value of the this pointer.
In general, to be safe, the compiler may assume that all objects are self-referentiable. There are a few excepti