Generics

We’ve not yet found a safe way to implement generic/polymorphic sum types without sacrificing ergonomics.

We have however found in practice that monomorphic types are sufficient for the vast majority of domain types.