> you would simply use a struct with a hidden
In such languages that's the equivalent of a newtype in Haskell.