It’s amazing that we can recover conditional conformance with just plain functions. It seems like such a complex feature, and it definitely is from the perspective of protocols and type systems, but at the value level it is so simple.
A complicated compiler feature can be reframed as function composition. Still, we have that compiler feature and we can use it, even if it took four years to get there. And we used it to great benefit with our Tagged and NonEmpty types. Still, there are plenty of things that you can’t do these days with protocols, but you can do them with witnesses.