You can do polymorphism with generic types, and that’s been around for a while.
Like,
List listOfThings = new ArrayList();
listOfThings.add(new Thing());
Thing t = listOfThings.get(0);
Is this not what you’re talking about? Generics need no runtime support, but they do enable a lot of compile-time checks.
Generics certainly don’t do parametric polymorphism or algebraic data types. Of course anyone can write a Pair or Triple class with trivial get and set methods, but that looks (and acts) silly.
Ooh, another thing I’d love is to have there be a Bracketable interface that lets you use brackets to call the class’s get and set methods. Then you could access Lists and even Maps with array syntax. It’d be sweet.
You can do polymorphism with generic types, and that’s been around for a while.
Like,
List listOfThings = new ArrayList(); listOfThings.add(new Thing()); Thing t = listOfThings.get(0);
Is this not what you’re talking about? Generics need no runtime support, but they do enable a lot of compile-time checks.
Generics certainly don’t do parametric polymorphism or algebraic data types. Of course anyone can write a Pair or Triple class with trivial get and set methods, but that looks (and acts) silly.
Ooh, another thing I’d love is to have there be a Bracketable interface that lets you use brackets to call the class’s get and set methods. Then you could access Lists and even Maps with array syntax. It’d be sweet.
All three of the things I asked for in this chain now exist as part of Java -
-- Lambdas—code snippets you can pass (without even declaring them as functions, even!),
-- brackets for accessing Lists and Maps, and
-- a way to declare variables for both a try and its associated catch and finally blocks.
I’m kinda floored.