>
>> I would also personally prefer associated types: ... This at least lets you ensure the
>> "other point" is the same type in both functions, though personally, I'd rather just
>> have generics.
>
> I'd also like to have generics, but that isn't something I can implement myself.
> Associated types would be interesting, but I don't think that associated types would remove the
> entire use-case for never
parameters, just perhaps the specific example of BackedEnum.
>
> ----
> - Daniel
Heh, this is the long game I am playing with inner classes: https://externals.io/message/125049#125057
If inner classes can be implemented, then we are just a short hop from being able to implement
generics with a similar approach to what I outlined in that thread. Granted, I'm making some
major changes to the RFC at the moment and the implementation -- based on feedback, so it'll be
a few days before that is finished.
An inner class view of generics (as opposed to the type aliasing view in that thread) looks
something like this:
// Box<T>
class Box {
public class T {}
// store(T $item)
public function store(static:>T $item) {}
}
// new Box<ItemType>()
$box = new class() extends Box {
public class ItemType as T {}
};
-Ish. Note that the example won’t actually work; but it illustrates how the engine could implement
it if there were inner/nested types.
So, assuming this new implementation I’ve been working on is waaay better than the old one (I
think it is), and the RFC is accepted; we may be closer to generics than you thought. Or maybe there
is someone out there with a whole different way of doing it that is even better… This is the
approach I'm chasing though.
— Rob