SRFI 137's type payload can only be accessed via a procedure returned by make-type. There is no way to get a reference to such a procedure when a given a value of a certain type or when given the type predicate. So supporting the type paylod of SRFI 137 seems orthogonal to existing type systems.
- Internal type system might have used symbols or identifiers that services "type name"---e.g.for debugging or introspection. srfi-137's type payload can be any Scheme values, so eithersuch internal system adds new field in its type structure to hold the type payload, or modifyinternal system to accept any object as a type name. It's doable, but its extra complexitywithout clear benefit (except supporting srfi-137 itself).
Only portable implementations will have to use the SRFI 137 interface.
Existing and proposed record systems want to achieve two things at once: Providing a way to structure a vector-like value (i.e. a record), and providing a way to create disjoint types and to create subtypes for them (in the sense of SRFI 137). I have understood this SRFI as a means to untangle these two things. SRFI 137 is only about the latter.Do existing record systems so fragmented that they'll hinder further development? I mightbe unaware of that since usually I stick to a single implementation. For example, it'seasy for Gauche to provide srfi-137 on top of existing type system. But if there will benice record system srfi, I'd prefer implementing it directly bypassing srfi-137 layer.Then it doesn't matter if the initial srfi is based on srfi-9 or srfi-99 or whichever existingrecord system.
Also, as I suggested earlier, we could use SRFI 137 to actually define what we mean by "disjoint type" and "subtype" so that other SRFIs can reference this one.
With SRFI 137, everyone could choose their own record system while inheritance chains of record types from different record systems would still work.