Maybe just [(GLclampf, v)] ? The docs could note that the list will in practice probably be of length 2 or 4, but most of the situations I can imagine you would treat it more uniformly as a list anyway.Maybe some other solution, like WeightedProperties2 ... | WeightedProperties4 ...
would be better...