how to declare an object, which cannot be modified after creation/initialization? e.g. I want the user not be able to modify fields a and b after the object has been initialized:
TMyObject = object
a* : proc
b* : proc
proc initMyObject(o: var TMyObject) =
a = someproc
b = someproc