High Order Function with Type Parameter

Moreover the immutability isn't necessary. The problem at-hand arose from forming a shared interface for the trait NatPos because we don't have first-class intersections with tagged instances. Afair, the research paper was assuming that the types were untagged and thus we could write to an instance as a Nat and read from it as Pos. Tagging forces de-structuring that disallows doing that.

My real motivation has been first-class intersections and unions as I think they will be necessary for composability, but I will want to discuss that in a different thread.