HM handles sub-typing just fine? Numerous approaches have been known since the 1980s - Michael Wand’s row polymorphism is one such approach.
https://en.wikipedia.org/wiki/Row_polymorphism