An update to the Generics Manifesto would be useful to understand the correct state-of-play.
Last I remember hearing, HKTs we’re dead in the water so it would be interesting to hear if that’s no longer the case.
I’m not sure if it’s the slightly less than accessible vocabulary, or the fact that the manifesto hasn’t been fully implemented, but I often find myself going through a sequence of events, such as:
- Planning to store a bunch of general types in an array and using a standard obj-c protocol
- Realising my needed type is actually a PAT.
- Looking for alternatives so I don’t need to write a load of type eraser boilerplate
- Writing a load of boilerplate
My understanding is Generalised Existentials will help this.
I also wonder if a protocol vs a PAT should have had alternative names. The ‘associated type requirement’ completely changes the capability of the type and I find that’s probably the hardest thing in gaining a solid understanding. It must be mind boggling for a beginner. Even forcing comprehension with an @objc protocol qualifier might help make the distinction more explicit.
They are different but because they’re named the same it adds a significant weight in cognitive load.
But yes, an update to the manifesto would be appreciated. I’m still burning a candle for HKTs.