Couldn't records be solved entirely at the type level?

One problem I don’t recalling seeing mentioned very often is that if all the fields of a data type are exposed via names, the type isn’t abstract - all those names can then be used to make public duplicates of values with the original data type.


Others have made similar laments e.g:

…which I have commented on here:

…with this being my final post there: