I've really come to appreciate OCaml's notion of generics. It doesn't have subtyping, so e.g. you have an `int list` or an arbitrary `'a list`, but nothing inbetween.
As soon as you add constraints like Java's `List<? as Foo>` it become incredibly hard to produce good errors.
miniblog.
Related Posts
It's incredibly hard to explain adversarial problems to users. I see gamers sincerely asking "why doesn't the publisher just fix the cheater problem?".
This is exacerbated by the fact that sharing too many details of anticheat can make the problem worse.
Uniform function call syntax (UFCS) is nifty: I can write foo(x, y, z) or http://x.foo(y, z).
Dot syntax for calls works incredibly well for IDE completion. Are there any languages that explicitly offer UFCS so the IDE experience is better?
I've never seen a language add a full-featured REPL later in its life. It's incredibly hard to add "update function definition" interactively.
Clojure is an interesting case. It was developed with a REPL in mind, but the JVM was not. Perhaps the VM matters less here?