Hello,

I have a question concerning the initialisation of mutually recursive record types. As a trivial example consider the following type declaration:

type atype = { b : btype; }
and btype = { a : atype; }

This is a legal type declaration (it type-checks w/o a blink), but I can’t see how such a type would be initialised? As both “a" and “b” are values there is an apparent bootstrapping issue. But as this is a legal type declaration I guess there is a way around, wondering what the right way is.

Thanks very much in advance for any clarification.

—Angelo
 



“Simplicity is the ultimate sophistication." ~ Leonardo da Vinci