2For reasons given in Section 8.3, we actually do not directly extend Set, but rather define a new constructor SetSpecies that cares about the order of the given list in the function structures.